如何对不同的选择选项设置不同的操作?

How can I set a different action on different select options?

本文关键字:设置 操作 选项 选择      更新时间:2023-09-26

我想有一个不同的动作链接到不同的选项值,当我点击应用按钮,这里是我的代码:

<select class="input-sm form-control" id="pendingbulk">
   <option value="0">Bulk Actions</option>
   <option value="1">Accept</option>
   <option value="2">Reject</option>
   <option value="3">Report</option>
</select>
<button class="btn btn-sm btn-default" id="pendingapply">Apply</button>
<script>
   $("#pendingapply").onclick(function() {
   var action = $('#pendingbulk').val();
   if (action == 1) {
     $(this).attr("action", "/accept/" + action);
   } else if (action == 2) {
     $(this).attr("action", "/reject/" + action);
   } else if (action == 3) {
     $(this).attr("action", "/report/" + action);
   };
   })
</script>

提前感谢。

form具有action属性not按钮。如果你的按钮被包装在表单中,你应该使用

$(this).closest('form').attr("action", ActionString);

或者,只需在表单中添加ID并使用

$('#YourFormId').attr("action", ActionString);

也可以用,.click()

$("#pendingapply").click(function() { //Typo here

您将属性应用到错误的元素

$(this).attr("action", "/accept/" + action);

将action属性应用于按钮而不是表单。

你需要定位你的表单:

$("#myFormId").attr("action", "/accept/" + action);

你也使用错误的方法为jquery对象,其.click不是.onclick

<script>
function f(){
var pendingbulk = document.getElementById("pendingbulk");
var myArrays = new Array();
myArrays[0] = pendingbulk.options[0]
myArrays[1] = pendingbulk.options[1]
myArrays[2] = pendingbulk.options[2]
myArrays[3] = pendingbulk.options[3]
for (var i=0 ; i< myArrays.length ; i++){
if (myArrays[i].selected){
location.href = myArrays[i].value
}
}
}
</script>
<select class="input-sm form-control" id="pendingbulk">
   <option value="0">Bulk Actions</option>
   <option value="1">Accept</option>
   <option value="2">Reject</option>
   <option value="3">Report</option>
</select>
<button class="btn btn-sm btn-default" id="pendingapply" onclick='f()'>Apply</button>