【发布时间】:2016-02-25 13:03:01
【问题描述】:
我有一个带有集合下拉列表的表单。选择并提交其中一个集合后,我想禁用按钮。因此该用户无法再次提交该收集选项。 Ajax 运行良好,并且按钮在成功时被禁用。但是,在我滚动下拉列表后,该按钮会再次启用。
表格
<form id="addToCollection">
<select id="collection_bundle_add_to_collection">
<option value="0" selected="selected">Choose a collection</option>
<option value="{{ id }}">{{ name }}</option>
</select>
<input id="add-object-to-collection"
type="submit" value="Add" class="button"/>
提交 Ajax
$('#addToCollection').on('submit', function(event){
event.preventDefault();
$("#add-object-to-collection").val('Adding...');
var url = '{{ path('collection_submit_object', {'id': '{{ id }}'}) }}';
var data = $('#addToCollection').serialize();
$.ajax({
url: url,
type : 'POST',
data: data
}).done(function( data ) {
if (data.error){
$('#addErrorMessage').css("display","inline");
}
else{
$("#add-object-to-collection").val('Added');
$("#add-object-to-collection").prop('disabled', true);
$('#addErrorMessage').css("display","none");
}
});
});
Change Javascript 检查选择选项值是否在 col_exists 数组中。 col_exists 是一个提交集合的数组,if 检查 option 的值是否在这个数组中。如果是,则该按钮被禁用
$("#collection_bundle_add_to_collection").change(function() {
if (col_exists.indexOf($("#collection_bundle_add_to_collection").val()) >= 0) {
$("#add-object-to-collection").prop('disabled', true);
$("#add-object-to-collection").attr('value', 'Added');
}
else {
$("#add-object-to-collection").prop('disabled', false);
$("#add-object-to-collection").attr('value', 'Add');
}
});
在下面的 gif 中你可以看到我首先选择并提交了 col1,并且按钮已被禁用。当我选择 col3 并返回 col1 时,col1 的按钮再次启用。这可以让用户再次提交 col1。
【问题讨论】:
-
下拉列表使用的组件是什么?你能创建一个演示问题的 plunkr 吗?
-
@GaneshKumar 添加了现场演示的 gif,希望它能解释问题
-
下拉组件是select。
-
selects onchange 事件附加了一些 javascript。请证明
-
哦,是不是第二次选择
col1时它一直处于启用状态的问题?请显示您创建col_exists变量的代码。
标签: javascript php jquery ajax symfony