第一次选择“添加新”并添加新选项时,以下工作正常。第二次(对于按类别区分的不同元素),它将新选项添加到所选元素和第一个元素。两个元素都必须添加新的。
<script type="text/javascript">
$('#upload_form option[value="addnew"]').click(function(){
// Show modal window
$('#add-new').modal('show');
// Get the class
var Classofentry = $(this).attr("class");
$('#add-new-submit').on('click', function(){
// Get new option from text field
var value = $('#add-new-text').val();
console.log(value);
$.ajax({
type: "POST",
url: "<?php echo site_url(); ?>main/change_options",
data: {new_option: value, new_option_class: Classofentry},
dataType: "html",
error: errorHandler,
success: success
});
function success(data)
{
$('#'+Classofentry).append("<option value='" + data + "'selected=\"selected\">" + data + "</option>");
//alert(data);
//alert('Success!');
}
function errorHandler()
{
alert('Error with AJAX!');
}
$('#add-new').modal('toggle');
});
});
</script>
奇怪的是,它似乎两次在ajax中循环。我想它找到了所有“addnew”值(到目前为止有2个,会有更多)。如何使用指定的类处理元素?希望这是有道理的。
答案 0 :(得分:4)
感谢您的回复!我找到了一种方法来让它工作,让点击嵌套,但解除第二个点击。我无法得到建议的solns(不需要所有的功能)。当它们没有嵌套时似乎没有办法让第二次点击工作。我不知道为什么。在调用ajax的函数中也必须有成功和errorHandler函数。这是代码(与上面的问题相同,但在第二次嵌套点击中使用unbind语句):
<script type="text/javascript">
var Classofentry = '';
$('#upload_form option[value="addnew"]').click(function(){
// Show modal window
$('#add-new').modal('show');
// Get the class
var Classofentry = $(this).attr("class");
console.log(Classofentry);Thanks
$('#add-new-submit').on('click', function(){
// Get new option from text field
var value = $('#add-new-text').val();
console.log(value);
$.ajax({
type: "POST",
url: "<?php echo site_url(); ?>main/change_options",
data: {new_option: value, new_option_class: Classofentry},
dataType: "html",
error: errorHandler,
success: success
});
$('#add-new-submit').unbind('click') // <-------------- The answer!!!!!
$('#add-new').modal('toggle');
function success(data)
{
//$('#animal_species').append("<option value='" + data + "'selected=\"selected\">" + data + "</option>");
$('#'+Classofentry).append("<option value='" + data + "'selected=\"selected\">" + data + "</option>");
//alert(data);
//alert('Success!');
}
function errorHandler()
{
alert('Error with AJAX!');
}
});
});
</script>
答案 1 :(得分:2)
不嵌套点击事件。
此处的问题是,每次触发$('#add-new-submit')
上的点击事件时,您都会在$('#upload_form option[value="addnew"]')
上绑定点击事件
您的脚本应如下所示
var Classofentry;
$('#upload_form option[value="addnew"]').click(function () {
// Show modal window
$('#add-new').modal('show');
// Get the class
Classofentry = $(this).attr("class");
});
$('#add-new-submit').on('click', function () {
// Get new option from text field
var value = $('#add-new-text').val();
console.log(value);
$.ajax({
type: "POST",
url: "<?php echo site_url(); ?>main/change_options",
data: {
new_option: value,
new_option_class: Classofentry
},
dataType: "html",
error: errorHandler,
success: success
});
$('#add-new').modal('toggle');
});
function success(data) {
$('#' + Classofentry)
.append("<option value='"
+ data + "'selected=\"selected\">" + data + "</option>");
//alert(data);
//alert('Success!');
}
function errorHandler() {
alert('Error with AJAX!');
}
答案 2 :(得分:0)
正确的代码:
var Classofentry = '';
$('#upload_form option[value="addnew"]').click(function(){
// Show modal window
$('#add-new').modal('show');
Classofentry = $(this).attr("class"); // Get the class
});
$('#add-new-submit').on('click', function(){
// Get new option from text field
var value = $('#add-new-text').val();
console.log(value);
$.ajax({
type: "POST",
url: "<?php echo site_url(); ?>main/change_options",
data: {new_option: value, new_option_class: Classofentry},
dataType: "html",
error: errorHandler,
success: success
});
function success(data){
$('#'+Classofentry).append("<option value='" + data + "'selected=\"selected\">" + data + "</option>");
//alert(data);
//alert('Success!');
}
function errorHandler(){
alert('Error with AJAX!');
}
$('#add-new').modal('toggle');
});