Форма JQuery отправляется, даже если проверка возвращает false - PullRequest
2 голосов
/ 27 августа 2009

Мой нижеприведенный код все еще отправляет форму со специальным символом в поле имени. Проверка работает, но если я отправляю повторно, она ломается и отправляет форму со специальными символами в имени.

В чем может быть причина этого?

$("#fee").submit(function(){
   trimmedValue = $.trim($("#name").val());
   $("#name").val(trimmedValue);
   typevalue = $("input:radio[@name='type']:radio:checked").val();
   if(typevalue=="FLAT" && !isFloat($("#amount").val())) {
   alert("Amount should be number with proper decimal formatting");
   $("#amount").val("0.0");
    return false;
}
var noSpecialChars = /[^a-zA-Z0-9]/g;
if (noSpecialChars.test($("#name").val())) {
    alert("Please enter valid fee Name. Do not enter special characters"  );
    return false;
}

if(typevalue=="PERCENTAGE" && !isFloat($("#percentage").val())) {
   alert("percentage should be number with proper decimal formatting");
   $("#percentage").val("0.0");
    return false;
}
if(typevalue=="FLAT" && $("#amount").val()=="0.0") {
    return confirm("Do you really want the amount to be 0.0 ?");
}
if(typevalue=="PERCENTAGE" && $("#percentage").val()=="0.0") {
    return confirm("Do you really want the percentage to be 0.0 ?");
}

});

Ответы [ 2 ]

3 голосов
/ 27 августа 2009

В каких браузерах можно воспроизвести это?

Я сделал это в Firefox 3.5.2, но не смог воспроизвести его в IE 6.0. Изучив еще немного, я заметил, что в этой строке ...

if (noSpecialChars.test($("#name").val())) {

... вызов .test () возвращал true, затем false, в чередующемся порядке (только в Firefox), предполагая некоторую проблему с RegExp. Поэтому я попытался заменить неявное создание RegExp следующим образом:

    //var noSpecialChars = /[^a-zA-Z0-9]/g;        
    var noSpecialChars = new RegExp("[^a-zA-Z0-9]");

И это решило проблему для меня.

0 голосов
/ 27 августа 2009

Похоже, что переводчик никогда не достигает return false; при повторном нажатии и вместо этого отправляет форму в href, указанном для формы.

Если у вас есть href в теге формы, попробуйте удалить его и вставить свойство непосредственно перед вызовом return.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...