在jquery中使用动态选择下拉列表时无法获取选项文本

时间:2015-01-02 07:25:14

标签: javascript jquery html

在这里,我使用jquery

在选择下拉列表中获取选项文本
tmp_selected  = $('#new_autoccType option:selected').text();

但是,我无法使字符串相等,在警报中获得正确的选项文本。 如果字符串相等,它不会转到if循环。 这只有在我使用动态选项值时才起作用,如果它是静态的,我可以得到值。

有人可以帮忙吗?

var def_expval="";
var newEC = 1;
var strNewCC = 1;


data = '<select class="tablefont" name="new_autoccType" id="new_autoccType">';	
 data+='<option value= '+def_expval+','+def_expval+','+def_expval+','+def_expval+','+def_expval+','+def_expval+','+def_expval+','+newEC+','+def_expval+','+def_expval+','+def_expval+','+def_expval+','+def_expval+','+def_expval+' > '+"New Electronic Check"+' </option>';
		  data+='<option value= '+def_expval+','+def_expval+','+def_expval+','+def_expval+','+def_expval+','+def_expval+','+def_expval+','+strNewCC+','+def_expval+','+def_expval+','+def_expval+','+def_expval+','+def_expval+','+def_expval+' > '+"New Debit/Credit Card"+' </option>';
data +='</select>';

$("#somedivs").html(data);


$('#new_autoccType').change(function() {  
	           selOption =  $(this).val();
	            tmp_selected  = $('#new_autoccType option:selected').text();
			   alert(tmp_selected);	
			   if(tmp_selected == "New Electronic Check")
	           {
	           		alert("inside ec");
					//some operations	
	           }
          if (tmp_selected == "New Credit/Debit Card")
	           {
       			 alert("inside cc");
       	 		//some operations
	           } 
}).change();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="somedivs"></div> 

Static JS FIDDLE

Dynamic JS FIDDLE - PROBLEM HERE

5 个答案:

答案 0 :(得分:1)

尝试删除空格,对于此操作,您可以使用trim函数

var tmp_selected = $('#new_autoccType option:selected').text().trim();

同样适用于第二个条件更改文本

if (tmp_selected == "New Credit/Debit Card")if (tmp_selected == "New Debit/Credit Card")

演示:http://jsfiddle.net/hs74sby1/13/

答案 1 :(得分:1)

你的字符串中有空格使用$ .trim(tmp_selected)函数来删除空格

if(tmp_selected == " New Electronic Check ")
           {
                alert("inside ec");
                //some operations   
           }
     if (tmp_selected == " New Debit/Credit Card ")
           {
             alert("inside cc");
            //some operations
           } 

Working Link

答案 2 :(得分:1)

使用trim()从所选文本中删除空格,如下所示:

 var tmp_selected = $('#new_autoccType option:selected').text().trim();

答案 3 :(得分:1)

js fiddle

试试这个

$('#new_autoccType').change(function() {  
               selOption =  $(this).val();
               tmp_selected  = $('#new_autoccType option:selected').text();
               alert(tmp_selected); 
               if(tmp_selected.trim() == "New Electronic Check")
               {
                    alert("inside ec");
                    //some operations   
               }
               if (tmp_selected.trim() == "New Debit/Credit Card")
               {
                 alert("inside cc");
                //some operations
               } 
}).change();

答案 4 :(得分:1)

使用$ .trim(tmp_selected)进行比较,删除空格

$('#new_autoccType').change(function() {  
           selOption =  $(this).val();
            tmp_selected  = $('#new_autoccType option:selected').text();
           alert(tmp_selected); 
           if($.trim(tmp_selected) == "New Electronic Check")
           {
                alert("inside ec");
                //some operations   
           }
      if ($.trim(tmp_selected) == "New Credit/Debit Card")
           {
             alert("inside cc");
            //some operations
           } 
    }).change();