2010-05-11 24 views
1

我有一個有兩個字段,名字和姓氏的表單。用戶不必填寫字段。當用戶點擊提交按鈕時,會顯示一個jQuery對話框,顯示用戶在表單中輸入的數據。我只想顯示輸入字段的數據。我試圖做一個if語句並使用length()函數,但它不起作用。幫助會很棒!如何確定表單域是否爲空的jQuery?

這裏是我的對話框jQuery腳本:

$(function(){ 
    //Initialize the validation dialog 
    $('#validation_dialog').dialog({ 
     autoOpen: false, 
     height: 600, 
     width: 600, 
     modal: true, 
     resizable: false, 
     buttons: { 
      "Submit Form": function() { 
       document.account.submit(); 
      }, 
      "Cancel": function() { 
       $(this).dialog("close"); 
      } 
     } 
    }); 
    // Populate the dialog with form data 
    $('form#account').submit(function(){ 
     $("p#dialog-data").append('<span>First Name: </span>'); 
     $("p#dialog-data").append('<span>'); 
     $("p#dialog-data").append($("input#firstname").val()); 
     $("p#dialog-data").append('</span><br/>'); 
     if (("input#lastname").val().length) > 0) { 
      $("p#dialog-data").append('<span>Last Name: </span>'); 
      $("p#dialog-data").append('<span>'); 
      $("p#dialog-data").append($("input#lastname").val()); 
      $("p#dialog-data").append('</span><br/>'); 
     }; 
     $('#validation_dialog').dialog('open'); 
     return false; 
    }); 
}); 

回答

7

只需使用後刪除CSRF/XSS漏洞:

if ($("#firstname").val() != "") { 
    // something is there 
} 

其次,指定$("input#firstname")幾乎沒有用處。只要做$("#firstname")。首先是不必要的冗長。

而且這是一個問題:

$("p#dialog-data").append('<span>'); 
$("p#dialog-data").append($("input#firstname").val()); 
$("p#dialog-data").append('</span><br/>'); 

您不能建立不良HTML這種方式。嘗試:

$("<span>").text($("#firstname").val()).appendTo("#dialog-data"); 
+0

最後一件事情沒有奏效。它將一個表單域添加到對話框窗口中。我試過這個: $(「#firstname」).val()。wrap(「」).appendTo(「#dialog-data」); 現在我沒有收到對話窗口。 – user338413 2010-05-11 15:48:50

+0

@user我從那以後更新了它。查看當前版本。 – cletus 2010-05-11 15:54:18

3

對於初學者("input#lastname").val().length應該$("input#lastname").val().length

此外,如果你要建立與jQuery的你應該知道,每次打電話$用選擇器你正在創建一個全新的jQuery對象。緩存選擇器的結果通常會更好。您提交功能,重構,可能是這個樣子:

$('form#account').submit(function(){ 
     dialog_data = $("p#dialog-data"); 
     _data = $('<span>First Name: </span>'); //Create a DOM element. 
     _data.append($("<span>").text($("input#firstname").val())); 
     _data.append('<br/>'); 
     last_name = $("input#lastname").val(); 
     if (last_name.length) > 0) { 
      _data.append('<span>Last Name: </span>'); 
      _data.append($("<span>").text(last_name))); 
      _data.append('<br/>'); 
     }; 
     dialog_data.append(_data); 
     $('#validation_dialog').dialog('open'); 
     return false; 
    }); 

編輯:更新功能看克萊圖斯的回答和Bobinc閱讀this article

+0

謝謝。這可能是一個錯字。 – user338413 2010-05-11 15:39:43

0

請使用下面的代碼

如果($( 「#名字」)VAL()修剪()== 「」) 警報( 「空」);

適合我