下拉菜单11+原生js获取select下拉框的selected的option项

本文介绍了JavaScript如何获取Select标签中选中的option值和文本,包括原生JS和jQuery两种方法。同时,展示了将JS数组转换为JSON格式以适应后台解析的需求,并给出了在Java后台解析的示例。此外,还讲解了JavaScript循环调用的场景,用于实时检查某个元素的值变化。
摘要由CSDN通过智能技术生成
对于以下select标签,获取当前选择的值得方式如下:

<select id="test" name="">
<option value="1">text1</option>
<option value="2">text2</option>
</select>
code:
一:javascript原生的方法
1:拿到select对象: var myselect=document.getElementById("test");
2:拿到选中项的索引:var index=myselect.selectedIndex ; // selectedIndex代表的是你所选中项的index
3:拿到选中项options的value: myselect.options[index].value;
4:拿到选中项options的text: myselect.options[index].text;
二:jquery方法(前提是已经加载了jquery库)

1:var options=$("#test option:selected");  //获取选中的项

2:alert(options.val());   //拿到选中项的值

3:alert(options.text());   //拿到选中项的文本
[2]js数组转json并在后台对其解析具体实现

想必大家在开发过程中也遇到类似问题,如果直接将js获取的数组传给后台,后台是无法区分数组的,因为js数组如果是二维的就是这样的:1,张三,23,2,李四,26

所以在此对其解决方法进行整理。希望能给大家带去帮助

首先需要在js里面对数组进行转换为json格式

js代码如下:

代码如下:
 
/**
     *js数组转json
     *
     */
    function arrayToJson(o) { 
    var r = []; 
    if (typeof o == "string") return "/"" + o.replace(/([/'/"//])/g, "//$1").replace(/(/n)/g, "//n").replace(/(/r)/g, "//r").replace(/(/t)/g, "//t") + "/""; 
    if (typeof o == "object") { 
    if (!o.sort) { 
    for (var i in o) 
    r.push(i + ":" + arrayToJson(o[i])); 
    if (!!document.all && !/^/n?function/s*toString/(/)/s*/{/n?/s*/[native code/]/n?/s*/}/n?/s*$/.test(o.toString)) { 
    r.push("toString:" + o.toString.toString()); 
    } 
    r = "{" + r.join() + "}"; 
    } else { 
    for (var i = 0; i < o.length; i++) { 
    r.push(arrayToJson(o[i])); 
    } 
    r = "[" + r.join() + "]"; 
    } 
    return r; 
    } 
    return o.toString(); 
    }


然后是在java后台js该字符串后 对其进行json转换。

代码如下:
 
com.alibaba.fastjson.JSONArray mainArray=JSON.parseArray(info.getMainparame());
     log.debug("数组大小:"+mainArray.size());
       for(int i=0;i< mainArray.size();i++){
           QybjProduceParam p=new QybjProduceParam();
           com.alibaba.fastjson.JSONArray paramObject=(com.alibaba.fastjson.JSONArray)mainArray.get(i);
          p.setParamename(paramObject.get(1).toString());
          p.setParamevalue(paramObject.get(2).toString());

          params.add(p);
       }
       info.setParams(params);


大家从java代码里面 不难看出,是经过2次转换。每次都是转为JSONArray对象。

如果是一维数组就只转换一次。

 
    
[3]javascript 循环调用示例介绍
 
function checksdzt(){
sdzt = $("#viewObj_zt_text").val();
//循环调用,如果已经获取到了结果,则退出循环
loopgetinfo = setInterval("checksdztsub()",50); //这里循环调用,间隔50毫秒
}
function checksdztsub(){

if ($("#viewObj_zt_text").val() !="" && $("#viewObj_zt_text").val() != sdzt)
{
if($("#viewObj_zt_text").val() == "锁定")
{
$("#sdyydes").html("<font color='red'>*</font> 锁定原因");
$("#viewObj_sdyy_text").attr("validate","{required:true}");
}
else if($("#viewObj_zt_text").val() == "正常")
{
$("#sdyydes").html(" 锁定原因");
$("#viewObj_sdyy_text").attr("validate","");
}
else

sdzt = $("#viewObj_zt_text").val();
// clearInterval(loopgetinfo); //终止循环
}
}

原生js获取select下拉框的selected的option项

一. 使用 原生js,获取select标签下属性有selected的option项。

  • 先写一个select标签如下:

    <select id="selectBox">
         <option value="VALUE-aaa" selected>
                  TEXT-aaaaa
         </option>
         <option value="VALUE-bbb">
                  TEXT-bbbbb
         </option>
     </select>
    
  • 原生js获取select标签这个 对象 :

var selectTest = document.getElementById("selectBox");

  • 然后找到 selected 的option标签的 索引值:

var selectIndex = selectTest.selectedIndex;

  • 这样就可以通过索引来获取选中项的 选中值和文本值:

var selectValue = selectTest.options[selectIndex].value;
var selectText = selectTest.options[selectIndex].text;


完整示例测试demo:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>

<body>
    <select id="selectBox">
        <option value="VALUE-aaa" selected>TEXT-aaaaa</option>
        <option value="VALUE-bbb">TEXT-bbbbb</option>
    </select>
    <script>
    var selectTest = document.getElementById("selectBox");
    var selectIndex = selectTest.selectedIndex;
    var selectValue = selectTest.options[selectIndex].value;
    var selectText = selectTest.options[selectIndex].text;
    var selectArr = [{
            "selectTest": JSON.stringify(selectTest),
            "selectIndex": selectIndex, 
            "selectValue": selectValue,
            "selectText": selectText 
        }];
    console.table(selectArr);
    </script>
</body>

</html>
  • 示例结果如图:

     


二. 当然这样写可能会比较麻烦,jquery为我们提供了更加方便的方法

  • 主要是用到了jquery中的 选择器:
var selectedOption = $("#selectBox option: selected");
  • 然后直接使用val() 和 text() 方法:
console.log(selectedOption.val(), selectedOption.text()  );
  • 注意使用jQuery的方法,记得 引入jquery库文件
jQuery获取Select选择的Text和Value:
语法解释:

1.  $("#select_id").change(function(){//code...});   //为Select添加事件,当选择其中一项时触发
2.  var checkText=$("#select_id").find("option:selected").text();   //获取Select选择的Text
3. var checkValue=$("#select_id").val();   //获取Select选择的Value
4. var checkIndex=$("#select_id ").get(0).selectedIndex;   //获取Select选择的索引值
5. var maxIndex=$("#select_id option:last").attr("index");   //获取Select最大的索引值
jQuery设置Select选择的 Text和Value:
语法解释:

1. $("#select_id  ").get(0).selectedIndex=1;  //设置Select索引值为1的项选中
2. $("#select_id ").val(4);    // 设置Select的Value值为4的项选中
3. $("#select_id  option[text='jQuery']").attr("selected", true);   //设置Select的Text值为jQuery的项选中 
jQuery添加/删除Select的Option项:
语法解释:

1.  $("#select_id").append("<option value='Value'>Text</option>");   //为Select追加一个Option(下拉项)
2. $("#select_id").prepend("<option  value='0'>请选择</option>");  //为Select插入一个Option(第一个位置)
3.  $("#select_id option:last").remove();  //删除Select中索引值最大Option(最后一个)
4.  $("#select_id option[index='0']").remove();  //删除Select中索引值为0的Option(第一个)
5.  $("#select_id option[value='3']").remove();   //删除Select中Value='3'的Option
5. $("#select_id option[text='4']").remove();   //删除Select中Text='4'的Option 
http://www.cnblogs.com/SAL2928/archive/2008/10/28/1321285.html 

jquery  radio取值,checkbox取值,select取值,radio选中,checkbox选中,select选中,及其相关 获  取一组radio被选中项的值 

var item = $('input[name=items][checked]').val();
 
获  取select被选中项的文本 

var item = $("select[name=items] option[selected]").text();  
select下拉框的第二个元素为当前选中值 

$('#select_id')[0].selectedIndex = 1;  
radio单选组的第二个元素为当前选中值 

$('input[name=items]').get(1).checked = true;  
获取值: 

文本框,文本区域:$("#txt").attr("value"); 
多选框  checkbox:$("#checkbox_id").attr("value"); 
单选组radio:    $("input[type=radio][checked]").val(); 
下拉框select: $('#sel').val();  
控制表单元素: 

文本框,文本区域:$("#txt").attr("value",'');//清空内容  
$("#txt").attr("value",'11');//填充内容 
多选框checkbox:  $("#chk1").attr("checked",'');//不打勾 
$("#chk2").attr("checked",true);//打勾  
if($("#chk1").attr('checked')==undefined) //判断是否已经打勾 
单选组 radio:     $("input[type=radio]").attr("checked",'2');//设置value=2的项目为当前选中项 
下拉框  select:   $("#sel").attr("value",'-sel3');//设置value=-sel3的项目为当前选中项  
$("<option value='1'>1111</option><option  value='2'>2222</option>").appendTo("#sel")//添加下拉框的option  
$("#sel").empty();//清空下拉框 
---------------------------------------------------------------------------------------------------- 

//遍历option和添加、移除option

function  changeShipMethod(shipping){
var len = $("select[name=ISHIPTYPE]  option").length
if(shipping.value != "CA"){
$("select[name=ISHIPTYPE]  option").each(function(){
if($(this).val() ==  111){
$(this).remove();
}
});
}else{
$("<option  value='111'>UPS  Ground</option>").appendTo($("select[name=ISHIPTYPE]"));
}
} 
//取得下拉選單的選取值 


$(#testSelect  option:selected').text();
或$("#testSelect").find('option:selected').text();
或$("#testSelect").val();
//
记  性不好的可以收藏下:
1,下拉框: 


var cc1 = $(".formc select[name='country']  option[selected]").text(); //得到下拉菜单的选中项的文本(注意中间有空格)
var cc2 = $('.formc  select[name="country"]').val(); //得到下拉菜单的选中项的值
var cc3 = $('.formc  select[name="country"]').attr("id");  //得到下拉菜单的选中项的ID属性值
$("#select").empty();//清空下拉框  //$("#select").html('');
$("<option  value='1'>1111</option>").appendTo("#select")//添加下拉框的option 
稍微解释一下:
1.select[name='country'] option[selected]  表示具有name 属性,
并 且该属性值为'country' 的select元素 里面的具有selected 属性的option 元素; 

2,单选框:
$("input[@type=radio][@checked]").val();  //得到单选框的  选中项的值(注意中间没有空格)
$("input[@type=radio][@value=2]").attr("checked",'checked');  //设置单选框value=2的为选中状态.(注意中间没有空格) 

3,复选框:
$("input[@type=checkbox][@checked]").val();  //得到复选框的选中的第一项的值
$("input[@type=checkbox][@checked]").each(function() {  //由于复选框一般选中的是多个,所以可以循环输出
alert($(this).val());
}); 

$("#chk1").attr("checked",'');//不打勾
$("#chk2").attr("checked",true);//  打勾
if($("#chk1").attr('checked')==undefined){} //判断是否已经打勾 

当然jquery的选择器是强大的. 还有很多方法. 


<script src="jquery-1.2.1.js"  type="text/javascript"></script>
<script language="javascript"  type="text/javascript">
$(document).ready(function(){
$("#selectTest").change(function()
{
//alert("Hello");
//alert($("#selectTest").attr("name"));
//$("a").attr("href","xx.html");
//window.location.href="xx.html";
//alert($("#selectTest").val());
alert($("#selectTest  option[@selected]").text());
$("#selectTest").attr("value", "2"); 

});
});
</script> 

<a href="#">aaass</a> 

<!--下拉框-->
<select id="selectTest"  name="selectTest">
<option value="1">11</option>
<option  value="2">22</option>
<option  value="3">33</option>
<option  value="4">44</option>
<option  value="5">55</option>
<option  value="6">66</option>
</select>
jquery  radio取值,checkbox取值,select取值,radio选中,checkbox选中,select选中,及其相关获取一组radio被选中  项的值
var item = $('input[@name=items][@checked]').val();
获取select被选  中项的文本
var item = $("select[@name=items] option[@selected]").text();
select  下拉框的第二个元素为当前选中值
$('#select_id')[0].selectedIndex = 1;
radio单选组的第二个  元素为当前选中值
$('input[@name=items]').get(1).checked = true;
获取值:
文本  框,文本区域:$("#txt").attr("value");
多选框  checkbox:$("#checkbox_id").attr("value");
单选组radio:  $("input[@type=radio][@checked]").val();
下拉框select: $('#sel').val();
控  制表单元素:
文本框,文本区域:$("#txt").attr("value",'');//清空内容
$("#txt").attr("value",'11');//  填充内容
多选框checkbox:  $("#chk1").attr("checked",'');//不打勾
$("#chk2").attr("checked",true);//  打勾
if($("#chk1").attr('checked')==undefined) //判断是否已经打勾
单选组radio:  $("input[@type=radio]").attr("checked",'2');//设置value=2的项目为当前选中项
下拉框 select:  $("#sel").attr("value",'-sel3');//设置value=-sel3的项目为当前选中项
$("<optionvalue='1'&  gt;1111</option><optionvalue='2'>2222</option&  gt;").appendTo("#sel")//添加下拉框的option
$("#sel").empty();// 清空下拉框 

获取一组radio被选中项的值
var item =  $('input[@name=items][@checked]').val();
获取select被选中项的文本
var item =  $("select[@name=items] option[@selected]").text();
select下拉框的第二个元素为当  前选中值
$('#select_id')[0].selectedIndex =  1;
radio单选组的第二个元素为当前选中值
$('input[@name=items]').get(1).checked =  true;
获取值:
文本框,文本区域:$("#txt").attr("value");
多选框  checkbox:$("#checkbox_id").attr("value");
单选组radio:  $("input[@type=radio][@checked]").val();
下拉框select: $('#sel').val();
控  制表单元素:
文本框,文本区域:$("#txt").attr("value",'');//清空内容
$("#txt").attr("value",'11');//  填充内容
多选框checkbox:  $("#chk1").attr("checked",'');//不打勾
$("#chk2").attr("checked",true);//  打勾
if($("#chk1").attr('checked')==undefined) //判断是否已经打勾
单选组radio:  $("input[@type=radio]").attr("checked",'2');//设置value=2的项目为当前选中项
下拉框 select:  $("#sel").attr("value",'-sel3');//设置value=-sel3的项目为当前选中项
$("<option  value='1'>1111</option><option  value='2'>2222</option>").appendTo("#sel")//添加下拉框的option
$("#sel").empty();//  清空下拉框 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lst0426

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值