为多个项目编写jQuery if语句的有效方法

时间:2011-01-11 19:08:51

标签: jquery forms

我有这个使用数据默认值的表单,我需要确保它们在提交之前已被清除。我有一个可以做到的手提钻脚本,但是我想知道你们中是否有人会介意帮我精练它。

下面的脚本可以工作,如果我想为表单中的每个输入写入它(目前8个数据默认值),它就完美了。我尝试用几种不同的方法选择表单中的所有输入,但似乎没有任何效果。我想有一种更聪明的方法可以解决这个问题,这就是我来到这里的原因:))

$('#form_input_submit').click(function() {
    if ($('#specific_input_id').val() == $('#specific_input_id').attr('data-default')) {
      $('#specific_input_id').val('');
    }
    return true;
});

4 个答案:

答案 0 :(得分:1)

您可以获取表单中的所有输入,并迭代它们。如果有些是收音机或选择输入,我们需要稍微更改一下。

$('#form_input_submit').click(function() {
    $(this).closest('form').find('input').each(function() {
        if( this.value == $(this).attr('data-default') ) {
           this.value = '';
        }
    });
});

点击form_input_submit按钮,即可获得.closest()祖先<form>,并.find()所有<input>个元素。

然后使用.each()迭代集合。

如果$(this).attr('data-default')表示来自服务器的输入的初始值(或者从其初始状态以任何方式),则可以这样做:

    if( this.value == this.defaultValue ) {
       this.value = '';
    }

答案 1 :(得分:1)

您可以将功能传递给.val(),将所有输入的代码简化为此代码:

$('#form_id').submit(function() {
   $(this).find('[data-default]').val(function(i, v) {
      return $(this).data('default') == v ? "" : v;
    });
});

此外,这不会附加到提交按钮的click事件,而是会收听<form>本身的submit事件。

答案 2 :(得分:1)

这将检查具有默认数据元素的所有输入元素,并在提交之前清除这些字段。

$('#tour_submit').click(function() {
    $('input[data-default]').each(function(index) {
      if ($(this).val() == $(this).attr('data-default')) {
       $(this).val('');
      }
    });
});

答案 3 :(得分:0)

尝试将所有输入项目分类,然后执行此操作

$('#form_input_submit').click(function() {
    $('.inputs').each(function() {
       if ($(this).val() == $(this).attr('data-default')) {
          $(this).val('');
       }
    });
    return true;
});