繁体   English   中英

表单的jQuery if / else语句

[英]jQuery if/else statement for a form

我有2个值需要在检查时存储在数据库中,如果我同时检查这两个值,则可以正常工作。

问题是:如果我必须添加第三个输入,而我仅检查新的“品牌3”,则已经存储为“品牌1”和“品牌2”的前两个值将被删除。 但我需要保持这些先前的值不变,只为“品牌3”写下新的值

 $(function() { set_checkbox_source_values(); $('#at').submit(function(e) { set_checkbox_source_values(); }); }); function set_checkbox_source_values() { $(".sub_checkbox").each(function(index){ if ($(this).attr('checked')) { $("input[data-brand='" + $(this).attr("data-brand") + "'][type='hidden']").val("ONBOT"); } else { $("input[data-brand='" + $(this).attr("data-brand") + "'][type='hidden']").val(''); } }); } 
 <form method="POST" name="at" id="at"> <input type="hidden" name="SOURCE_ORIG_brand1" value="" data-brand="1" /> <input type="hidden" name="SOURCE_LAST_brand1" value="" data-brand="1" /> <input type="hidden" name="SOURCE_ORIG_brand2" value="" data-brand="2" /> <input type="hidden" name="SOURCE_LAST_brand2" value="" data-brand="2" /> <input value="1617027553" data-brand="1" name="sub" type="checkbox" class="sub_checkbox" /> <input value="1617027907" data-brand="2" name="sub" class="sub_checkbox" type="checkbox" /> <input name="submit" value="sumbit" /> </form> 

因此,为了澄清更多,这就是正在发生的事情。 如果我选中brand1复选框,而未选中brand2,则会发生以下情况:

选项1

但是,如果我返回并选中brand2复选框,而未选中brand1,则该值将被覆盖并删除前一个值,使brand1为空。

我需要我的代码执行的操作是将SOURCE必须发布到空字段,但不覆盖先前的值,因此我的最终目标是:

需要结果

答案似乎似乎部分取决于服务器端代码如何处理空的或未定义的$_POST值。 您可以从查询中排除空白值,但是如果要将值设置为空白字符串怎么办?

建议不要disabled输入的值,而不要清除输入的值,以防止发布未经检查的值。 然后,在服务器端代码中,从查询中排除未发布的值。

...禁用控件的值未与表单一起提交。

就像是:

function set_checkbox_source_values() {
  $(".sub_checkbox").each(function(index) {
    $("input[data-brand='" + $(this).attr("data-brand") + "'][type='hidden']").prop('disabled', !this.checked);
  });
}

这是一个使用常规文本输入的示例,仅用于演示。
您可以改用隐藏输入。

 jQuery('input[type=checkbox]').on('change', function() { var code = jQuery(this).data('code'); jQuery('input[type=text][data-code=' + code + ']').prop('disabled', !this.checked); }); 
 div { margin: 0 0 1em; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div> <input type="text" value="test1" data-code="tester1" disabled /> <input type="checkbox" data-code="tester1" /> </div> <div> <input type="text" value="test2" data-code="tester2" disabled /> <input type="checkbox" data-code="tester2" /> </div> <div> <input type="text" value="test3" data-code="tester3" disabled /> <input type="checkbox" data-code="tester3" /> </div> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM