0

テキストボックスを検証するための次のjsコードがあります。

function submitContactUs() {
   var canSubmit = true;

   if (($('#cf_name_txt').val() == "") || ($('#cf_name_txt').val().substr(0, 1) == "*") || ($('#cf_name_txt').length == 1)) {
    if (!$('#cf_name_txt').next('img').length) { //image not there yet
        $('#cf_name_txt').after(theErrorIcon + " id=\"errIcon_cfname\" />");
        $('#errIcon_cfname').vibrate(conf);
        canSubmit = false;
        console.log('false name');
    }
   } else {
    $('#errIcon_cfname').remove();
        console.log('true name');
   }

   if (canSubmit) {
        alert(canSubmit);
        //$("#sendDataContactus").click();
   }

最初にボタンをクリックしてその関数を起動すると、正しいfalseが表示されますが、ボタンをもう一度(何も変更せずに)押すと、何らかの理由でtrueとして戻ります??? 誰かがjsに何か問題があり、それを引き起こすのを見ていますか?

最初にボタンを押したときに得られる値は次のとおりです。

false name

2番目のボタンを押すことで得られる値は次のとおりです。

messagebox saying true
4

1 に答える 1

3

2回目にクリックするとimg、すでにタグが設定されているため、変数はリセットされません。canSubmit = false;

次のように、変数の割り当てをエラーコードブロックの作成の外に移動します。

 if (($('#cf_name_txt').val() == "") || ($('#cf_name_txt').val().substr(0, 1) == "*") || ($('#cf_name_txt').length == 1)) {

    canSubmit = false;
    ...
于 2012-10-08T16:00:43.197 に答える