[英]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,则会发生以下情况:
但是,如果我返回并选中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.