尝试使用JQuery从select表单中获取值

时间:2017-07-26 09:37:57

标签: jquery html ajax

我要做的是使用 // Computes time difference of two time periods in 24h00 format // Time periods are input #include <iostream> using namespace std; int seconds,seconds2, minutes, minutes2, hours, hours2; void CalcDiff(int seconds, int seconds2 int minutes, int minutes2, int hours, int hours2); int main() { int sec, sec2, min, min2, hr, hr2, diff; cout << "Enter the first time." << endl; cout << "Enter hours, minutes and seconds: "; cin >> hr >> min >> sec; cout << "Enter the second time." << endl; cout << "Enter hours, minutes and seconds: "; cin >> hr2 >> min2 >> sec2; CalcDiff(int sec, int sec2, int min, int min2, int hr, int hr2, diff); cout << endl << "Difference in times: " << hr << ":" << min << ":" << sec; cout << " - " << hr2 << ":" << min2 << ":" << sec2; return 0; } void CalcDiff(int seconds, int seconds2, int minutes, int minutes2, int hour, int hour2, diff) 而不是使用MeasurementID: $('#measurement').find(":selected").val()从测量表单中获取所选值,但它似乎不起作用。我还尝试了php$('select[name=measurement]').val()

$('#measurement option:selected').val()

4 个答案:

答案 0 :(得分:1)

这是我如何做到的:

HTML:

<select data-user="<?php echo json_encode($UserID); ?>" id="mySelect">
    <option value="1">Option 1</option>
    <option value="2">Option 2</option>
    <option value="3">Option 3</option>
</select>

JS:

<script>
    $(document).ready(function()
    {
        $('.mySubmitBtn').on('click', function()
        {
            var selected = $('#mySelect').val(),
                userId   = $('#mySelect').data('user');

            $.ajax({
                data:    {value: selected, user: userId},
                url:     'myScript.php',
                type:    'post',
                success: function(res) {console.log(res)},
                error:   function(res) {console.log(res)}
            })
        })
    });
</script>

这样做,将用户ID分配给select作为数据值。这意味着我们可以使用.data来检索数据元素 - 语法为:.data('attribute') - 这样就可以获得数据属性。

然后它在点击时获得选定的值,直接执行ajax的问题​​是它获取所选值,但是在文档加载时,而不是在任何更新上。这就是它显示旧价值的原因。

然后将它全部传递给脚本以执行任何操作。

注意:这个代码不像你那样,所以不要只是复制和粘贴;)

更新1

更适合OP的示例(js)

<script>
    $(document).ready(function()
    {
        $('#mySelect').on('change', function()
        {
            var selected = $(this).find('option:selected').val(),
                userId   = $(this).data('user');

            $.ajax({
                data:    {value: selected, user: userId},
                url:     'myScript.php',
                type:    'post',
                success: function(res) {console.log(res)},
                error:   function(res) {console.log(res)}
            })
        })
    });
</script>

答案 1 :(得分:0)

您可以尝试以下

你必须添加setTimeout。

<select id="user" name="user" onchange="fun_submit(this)" ></select>

fun_submit(obj){
   setTimeout(function(){obj.form.submit();},500);

}

然后您可以使用以下方法获取所选选项的值。

var value = $('select#measurement option:selected').val();

答案 2 :(得分:0)

<select name="options" id="options">
    <option value="one">Option 1</option>
    <option value="two">Option 2</option>
</select>

用于获取所选选项值的Js代码。

$('#options').val();

答案 3 :(得分:0)

试试这个:

$('#measurement').val()

在最近的jquery版本中,select元素本身的.val()就足够了。

来源:http://api.jquery.com/val/

演示:

function displayVals() {
  var singleValues = $( "#single" ).val();
  var multipleValues = $( "#multiple" ).val() || [];
  
  // When using jQuery 3:
  // var multipleValues = $( "#multiple" ).val();
  $( "p" ).html( "<b>Single:</b> " + singleValues +
    " <b>Multiple:</b> " + multipleValues.join( ", " ) );
}
 
$( "select" ).change( displayVals );
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="single">
  <option>Single</option>
  <option>Single2</option>
</select>
 
<select id="multiple" multiple="multiple">
  <option selected="selected">Multiple</option>
  <option>Multiple2</option>
  <option selected="selected">Multiple3</option>
</select>

<p></p>