2009-08-27 6 views
2

私の下で言及したコードは、依然として名前フィールドの特殊文字にフォームを送信します。検証は機能しますが、繰り返し送信すると、名前の中に特殊文字を含むフォームが改行されて送信されます。妥当性検査が偽を返してもJQueryフォームが提出されます

この理由は何ですか?

$("#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 ?"); 
} 

});

答えて

3

どのブラウザでこれを再現できますか?

Firefox 3.5.2で行いましたが、IE 6.0で再現できませんでした。いくつかのより多くを探索した後、私はいくつかの問題を示唆し、このラインでは...

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

...呼び出しが)(.TESTする(Firefoxのみで)交互パターンで、その後truefalseを返していましたことに気づきましたRegExpと入力します。そこで、RegExpの暗黙の作成を次のように置き換えようとしました。

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

それで私の問題は解決しました。

+0

これは問題を修正しました。このシナリオでデバッグする方法を知りたいですか? –

+0

問題はありません - この場合は、テキストエリアの要素をページに追加し、noSpecialChars.test($( "#name")。val())の結果をそのテキストエリアに書き込むことで、 。私はFirebugを使っていくつかの早期仮説を割り引いた。 –

0

繰り返しを押すと決してreturn false;に届かず、代わりにフォームに指定されたhrefにフォームを送信しているようです。

フォームタグにhrefがある場合は、フォームタグを削除し、戻り値が呼び出される直前にプロパティを挿入してください。

+0

フォームのhref属性はありません。メソッド属性だけでなくアクションも追加しました。 –

関連する問題