2013-01-07 3 views
0

У меня есть таблица HTML с строками, представляющими записи базы данных. В ячейке последнего столбца есть форма с кнопкой отправки для удаления записи базы данных. Формы имеют уникальные идентификаторы, но поля внутри них просто имеют имена, и эти имена одинаковы для каждой формы.Предоставление формы для защиты от неполадок

У меня есть простое подтверждение пользователя, но я хочу убедиться, что форма не просто отправлена ​​из-за неработающего Javascript (ошибка или что-то еще). Поэтому я решил оставить значение одного из скрытых полей пустым и заполнить его во время отправки (поле, которое требуется скрипту обработки, но такое же значение независимо от того, какая запись выбрана, поэтому легко назначить). Вот то, что я пробовал:

$(document).ready(function() { 
    $("form[id^='deltrans']").submit(function(e) { 
    if (confirm("Are you sure you want to delete this transaction?")) { 
     $(this).find("[name='uri']").val("my value..."); 
    } else { 
     e.preventDefault(); 
    } 
    }); 
}); 

Но с помощью $ (это) .find(), кажется, не работает - Firebug говорит $ (это) .find ("[имя = 'URI']"). val() не определено. Можете ли вы либо увидеть мою ошибку, либо получить более качественное, более простое предложение о том, как предотвратить случайные формы представления, если есть проблема с JS?

EDIT: На запросов в комментариях, вот Релевент HTML:

<form method="post" id="deltrans<? echo $row->TransID; ?>" action="processor.php"> 
    <td class="button-in-table"> 
    <input type="hidden" name="tid" value="<? echo $row->TransID; ?>"> 
    <input type="hidden" name="uri" value=""> 
    <input type="submit" name="deltrans" value="Del"> 
    </td> 
</form> 
+0

Выполняет ли '.filter()' лучше, чем '.find()'? – Sparky

+0

Просьба показать нам html – Adil

+0

Просьба показать HTML. У вас не должно быть элемента DOM в вашей форме с именем 'uri'. '$ (this)' должен указывать тег '

'. – lifo

ответ

0

Если uri вход находится внутри формы, не могли бы вы использовать:

$(this).children('[name^=uri]').val("my value...");

В его целое:

$(document).ready(function() { 
    $("form[id^='deltrans']").submit(function(e) { 
    if (confirm("Are you sure you want to delete this transaction?")) { 
     $(this).children('[name^=uri]').val("my value..."); 
    } else { 
     e.preventDefault(); 
    } 
    }); 
}); 
+0

children() был тем, что я пробовал первым, но потом я понял, что это действительно внук, поэтому я изменил его на find(). – OsakaWebbie

+0

Ах. Да, я вижу это теперь с вашим обновленным кодом. –

Смежные вопросы