在下拉選擇更改並基於服務器輸出(真或假)時尋找調用服務器端方法(Java)的方法,啓用或禁用少數複選框。如果有人能提供相同的建議,我將非常感激。啓用/禁用基於Jquery Ajax的複選框在下拉更改時調用服務器端方法
2
A
回答
1
我已經編寫了一個快速示例,向您展示如何完成此操作。首先,您需要設置您的Java應用程序以允許使用Ajax調用。 Java應用程序需要輸入一個單一的帖子變量名稱selected
,它是下拉菜單中所選選項的值。那麼Java應用程序將需要返回格式化過類似的JSON字符串:
{
"disabled":[
"1",
"3",
"5"
]
}
的1,3,5代表你想被禁用的複選框的ID。這些可以是任何複選框的任何ID。如果它不在這個數組中,那麼將設置爲默認啓用。
HTML:
<select id="choiceSelector">
<option value="1">Something 1</option>
<option value="2">Something 2</option>
</select>
<br/><br/>
<div id="changingCheckboxes">
<input type="checkbox" name="" id="1"><br/>
<input type="checkbox" name="" id="2"><br/>
<input type="checkbox" name="" id="3"><br/>
<input type="checkbox" name="" id="4"><br/>
<input type="checkbox" name="" id="5"><br/>
<input type="checkbox" name="" id="6">
</div>
使用Javascript/jQuery的
function UpdateCheckBoxStatus()
{
var CurrentChoice = $('#choiceSelector').val();
$.ajax({
url: "####YOUR JAVA APP URL####",
data: { "selected": CurrentChoice },
type: "post",
dataType: "json",
success: function (data)
{
SetCheckbox($('#changingCheckboxes').children("input:[type='checkbox']"), true);
$.each(data.disabled, function()
{
SetCheckbox($('#changingCheckboxes #' + this), false);
});
}
});
}
/// Sets the checkbox to enabled or disabled
/// @param th Jquery reference of one or more checkboxes
/// @param usable True/False if the checkbox is enabled/disabled
function SetCheckbox (th, usable)
{
if (usable)
th.removeAttr("disabled");
else if (!usable)
th.attr("disabled", true);
}
$(function()
{
$('#choiceSelector').change(UpdateCheckBoxStatus);
UpdateCheckBoxStatus(); //run for page load
});
而且,這裏是它的的jsfiddle:http://jsfiddle.net/bpstw/1/
希望有所幫助。
1
當然。添加一個.change()
handler到下拉元素,在處理程序內讓一個$.ajax()
request將選定的值傳遞給你的Java(可能jQuery的快捷方式ajax方法$.get()
或$.post()
會比$.ajax()
更容易),並在Ajax成功回調中檢查服務器的響應和啓用或禁用相關複選框。
1
另一個類似的單選按鈕解決方案,包括Java中的服務器端代碼。
的Jquery/HTML 值1 值2 值3
<span id="changingCheckboxes">
<label for="group1">One</label>
<input type="radio" name="group1" id="1" value="option1"/>
<label for="group1">Two</label>
<input type="radio" name="group1" id="2" value="option2"/>
<label for="group1">Three</label>
<input type="radio" name="group1" id="3" value="option3"/>
<label for="group1">Four</label>
<input type="radio" name="group1" id="4" value="option4"/>
</span>
jQuery的
function UpdateCheckBoxStatus() {
var CurrentChoice = $("#dropDownId").val();
$.ajax({
url: "/serverSideUrl",
data: { "selectedDropDownId": CurrentChoice },
type: "post",
dataType: "json",
success: function (data) {
SetCheckbox($("#changingCheckboxes").children("input:[type='radio']"), true);
$.each(data.disabled, function() {
SetCheckbox($("#changingCheckboxes #" + this), false); });
}
});
}
function SetCheckbox (th, state) {
if (state) th.removeAttr("disabled");
else if (!state) th.attr("disabled", true);
}
$('#dropDownId').change(UpdateCheckBoxStatus);
的Java
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,
IOException {
String selectedValue = request.getParameter("dropDownId");
YourDao yourDao = new YourDao();
Map<String, List<String>> disabledOptions = cycleDao.determineStateDropDown(selectedTool);
String json = new Gson().toJson(disabledOptions);
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(json);
}
相關問題
- 1. 在複選框的更改事件中調用服務器端的方法JSP
- 2. 啓用/基於下拉選擇(jQuery的)
- 3. 基於下拉選擇禁用啓用文本框asp.net javascript
- 4. 用於啓用和禁用下拉框的ajax代碼
- 5. 基於下拉菜單選項啓用/禁用選項卡
- 6. jQuery的啓用/禁用複選框
- 7. 使用jquery禁用基於選定值的下拉選項
- 8. 在服務器端的gridview中禁用複選框
- 9. 使用jQuery啓用/禁用複選框
- 10. 在javascript禁用複選框,並承認它在服務器端
- 11. 禁用jquery選項卡服務器端
- 12. PHP:禁用基於下拉菜單啓用文本框
- 13. jquery ajax和服務器端方法調用錯誤asp.net
- 14. JQuery - 每行啓用/禁用複選框
- 15. jQuery複選框啓用禁用
- 16. 複選框啓用/禁用jquery
- 17. 啓用AJAX WCF服務的級聯下拉方法404錯誤
- 18. 使用基於複選框和下拉選擇的jQuery執行乘法
- 19. 複選框禁用啓用
- 20. Ajax調用與服務器端調用
- 21. 從jQuery對話框調用服務器端方法
- 22. jQuery的AJAX方法調用Web服務接收403禁止
- 23. 禁用複選框和下拉列表
- 24. 禁用/啓用HtmlSelect基於複選框簽入javascript和asp.net
- 25. 如何基於複選框啓用/禁用提交按鈕?
- 26. 禁用複選框基於jquery中的另一個複選框的選擇
- 27. 基於其他值禁用複選框
- 28. 禁用Jquery複選框單擊多選下拉菜單
- 29. 使用JQuery調用服務器方法
- 30. 基於選擇的選項啓用/禁用選擇框
+1。將看看它,並在需要時回覆你。 – 2012-03-11 15:34:51