我有一个选择列表,正在使用文本字段中的值填充。我还有两个按钮:一个添加按钮,用于将输入的值添加到选择列表,还有一个删除按钮,用于从选择列表中删除输入的值。我想使用jQuery执行以下操作:
以下是我提出的一些代码:
// Remove selected options
$('#removeButton').click(function() {
//$.map($('#addedchargeamtid :selected'), function(e) {
$.map($('#addedchargeamtid option'), function(e) {
var exp = $(e).text();
// Would like to have all the Option values in CVS format 0.00,1.99, etc...
// If removed this should also remove the value in the array
})
$('#removeButton').hide();
return !$('#addedchargeamtid :selected').remove();
});
// Add charge amount
$('#addedchargeamtid option:selected').focus(function() {
$('#removeButton').show();
});
当我添加第一个值时显示删除按钮,但是如果我删除了该按钮,则该按钮不会显示备份。
更新:
好的,我已将其编辑为此。
$('#removeButton').click(function() {
$('#addedchargeamtid :selected').remove();
$.map($('#addedchargeamtid option'), function(e) {
var exp = $(e).text();
alert(exp); // Need this in CSV format but I think it displays the correct values
})
//if($("#addedchargeamtid option").length > 0) { <-- Didn't work
if($("#addedchargeamtid").length > 0) {
$('#removeButton').show();
} else {
$('#removeButton').hide();
}
});
当SELECT中没有值时,仍然没有隐藏按钮。也尝试了它。
答案 0 :(得分:2)
我相信您可以查看选项长度是否> 0表示它有值,如果没有那么它就不存在意味着它没有像这样的值:
if($("#addedchargeamtid option").length > 0 ) //if addedchargeamtid is the id of select tag
{
$('#removeButton').show();
}
else
{
$('#removeButton').hide();
}
答案 1 :(得分:0)
如果我理解正确的问题,我想你想改变这个:
// Add charge amount
$('#addedchargeamtid option:selected').focus(function() {
$('#removeButton').show();
});
到此:
// Add charge amount
$('#addedchargeamtid option').focus(function() {
$('#removeButton').show();
});
这样事件处理程序就会被添加到所有select的选项中,而不仅仅是代码执行时当前选择的选项。并且还要确保您为任何新创建的项目设置此处理程序。
答案 2 :(得分:0)
我对原始问题进行了大量编辑,假设我的编辑是正确的,这是您问题的解决方案:
XHTML:
<input type="text" id="textField" />
<input type="button" id="addButton" value="Add" />
<input type="button" id="removeButton" value="Remove" />
<select multiple="multiple" id="selectList">
</select>
JavaScript(假设上面的文档结构):
$(function(){
$("#textField").keypress(function(){
var val = $(this).val();
if (val === '') {
return;
}
// Clear selections
$("#selectList option").removeAttr("selected");
// Value not in select list
if ($("#selectList option").length === 0 || $("#selectList option[value="+val+"]").length === 0) {
$("#removeButton").hide();
$("#addButton").show();
// Value in select list
} else {
$("#removeButton").show();
$("#addButton").hide();
// Select it
$("#selectList option[value="+val+"]").attr("selected", "selected");
}
});
$("#removeButton").click(function(){
var val = $("#textField").val();
val !== '' && $("selectList option[value="+val+"]").remove();
});
$("#addButton").click(function(){
var val = $("#textField").val();
val !== '' && $("#selectList").append('<option value="'+val+'" label="'+val+'">'+val+'</option>');
});
});
答案 3 :(得分:-1)
要获得最佳答案,请尝试以下代码:
使用Jquery添加选项以选择标记
$(document).ready(function(){
//Function To Add or Remove New Option Field in Form
var i=2;
$(".add").on("click", function add_new(){
$(".more").append($("<p/>").append(
"<input type='text' id='option"+i+"' placeholder='option"+i+"'/>",
$("<img/>",{class:'add', src:'images/add.png'}).click(function(){add_new();}),
$("<img/>",{class:'del', src:'images/del.png'}).click(function(){$(this).parent().remove();})
))
i=i+1;
});
//Below Function Executes on Click of create select Button
$("#button").on("click",function(){
//To Clear Previous Select Option Field if Exists in Div
$("#prm").empty();
//Creating Select Option in Div
$("#prm").append("<select></select>");
//Creating Options and Adding it To Above Select Tag
$("input[type=text]").each(function(){
if($(this).val()==""){
alert($(this).attr('id')+" is Empty !");
}
else{
$("select").append('<option>'+$(this).val()+'</option>');
}
});
});
});