2010-05-11 87 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()修剪()== “”) 警报( “空”);

适合我