0

可以使用一些帮助,似乎应该有一个更干净的方式来写出来。

我想选择#endowment div 中的每个文本输入,即不为空。另外,我正在写一个名为“dyn_hidden”的 div,我想在每个输入中附加一个值。因此,在每次模糊时,我都会删除所有内容,然后将每个内容添加回去。有没有更好的方法呢?

谢谢!

jQuery("#endowment input[type='text']").blur( function() {

    // Empty out dyn_hidden div
    jQuery('#dyn_hidden').html('');

    jQuery("#endowment input[type='text']").each(function() {
        if(jQuery(this).val() !== "") { 
            end_fund      = '<input type="hidden" name="fund[]" value="'+jQuery(this).attr('title')+'">';                                                                                                                  
            end_amount    = '<input type="hidden" name="amount[]" value="'+jQuery(this).val()+'">';
            jQuery('#dyn_hidden').append(end_fund, end_amount);
        }
    });
});
4

2 回答 2

1

首先,当 DOM 加载时,您可以将所有隐藏的输入插入到您的 div 中。因此,当调用输入模糊时,您只需更改与该特定值相对应的隐藏输入。

您可以使用 HTML 5 属性来存储该特定文本框的信息。

像这样的东西..您还可以消除页面上重复ID的可能性..

jQuery(function() {
    // Insert all the input corresponding to the textboxes initially
    jQuery("#endowment input[type='text']").each(function(i) { // Use i in each as iterator to store the data-attribute
        // Store the value of the textbox in the data-id attribute
        // Add the data-attribute to the textbox that stores the index
        // of corresponding textbox
        $(this).attr('data-id', i);
        var end_fund = '<input type="hidden" name="fund[]" data-param="title-' + i + '" value="' + jQuery(this).attr('title') + '">';
        var end_amount = '<input type="hidden" name="amount[]" data-param="value-' + i + '" value="">';
        jQuery('#dyn_hidden').append(end_fund, end_amount);
    });

    // Blur function of text box
    jQuery("#endowment input[type='text']").blur(function() {
        // Just change the value of corresponding input field..
        if (this.value !== "") {
            var $index = $(this).data('id');
            // Find the hidden input with data-param= "value + $index  inside
            // the #dyn_hidden  div  
            // And then set the value to it...
            $('#dyn_hidden input[data-param="value-' + $index + '"]').val(this.value);
        }
    });
});​

代码

于 2012-10-31T19:50:23.623 回答
1

你可以像在这个问题中发现的那样做这样的事情

 $('#button').click(function() {

    var emptyTextBoxes = $('input:text').filter(function() { return this.value == ""; });
    var string = "The blank textbox ids are - \n";

    emptyTextBoxes.each(function() {
      string += "\n" + this.id;
    });
    alert(string);
  });
于 2012-10-31T19:20:16.133 回答