1

如果有人使用 jquery 将文本字段留空,我只是想打印一条错误消息。但它没有被显示。这是html代码:

 <form id="form1" runat="server">
    <div>
    <table>
     <tr>
    <td>
   <label>Name</label></td>
   <td> <input class="required" type="text" name="name" id="name" /><span>(required)</span></td>
     </tr><tr>
    <td><br/><label>Address</label></td>
    <td><input class="required" type="text" name="address" id="address"/><span>(required)</span></td></tr>
     </table>
    </div>
    </form>

这是 Jquery 代码。

$(document).ready(function () {
   var requiredFlag = ' * ';
    $('form :input').filter('.required').next('span').text(requiredFlag).end();
    if ($(this).is('.required')) {
       if (this.value == '') {
       var errorMessage = 'This is a required field';
                             };
            $('span></span').text(errorMessage).appendTo($(this));
                             }; 
});

可能是我错过了一些东西。帮助专家。谢谢你。

4

2 回答 2

1
  1. this在您的代码中指的是window/document对象而不是input元素;
  2. 您的代码中有一些拼写错误 => $('span></span');
  3. 您的代码中没有event handler用于验证inputs
  4. 您的标记中有 span 元素,无需生成新元素
  5. 您可以使用表单submit事件来验证输入
  6. 选择:input器已被弃用

试试这个:

var errorMessage = 'This is a required field';
$('form input.required').next().text('*');

$('form').submit(function(){
   var errors = 0;
   $('input.required', this).each(function(){
       if (this.value == '') {
          $(this).next().text(errorMessage);
          errors++;
       }
   })
   if (errors > 0) {
     return false // prevents the default action of the event if there are errors
   }
})
  1. submit()
  2. next()
  3. each()
于 2012-08-17T13:07:31.387 回答
0

我认为这不是一个好的选择器: $('span></span'). 使用 jquery Siblings 选择器,并使用 .text() 或 .html() 函数更改跨度文本 http://api.jquery.com/html/

于 2012-08-17T13:07:41.477 回答