3

我目前正在使用 Ajax 提交输入字段,而无需刷新页面或单击按钮。该函数适用于文本输入字段,但不适用于发布选择框的值,然后 php 回显结果。我使用 firebug 工具进行检查,Ajax/js 函数没有发布任何内容。

如何提交选择框的值,以便我可以与 php 回显? 例子

JS

<script>
$(document).ready(function() {
        var timer = null; 
        var dataString;   
          function submitForm(){
                         $.ajax({ type: "POST",
                         url: "index.php",
                         data: dataString,
                         success: function(result){
                         $('#item_input').text( $('#resultval', result).html()); 
                             }
                            });
                            return false;
           }
             $('#item_name').on('keyup', function() {
             clearTimeout(timer);
             timer = setTimeout(submitForm, 050);
             var name = $("#item_name").val();
             dataString = 'name='+ name;
          });
 }); 
</script>

PHP

<?php
      if ($_POST)
                {
                  $item_name     = $_POST['name'];
                  echo ('<div id="item_input"><span id="resultval">'.$item_name.'</span></div>');
                }
?>

HTML

<html>
<form method="post" id="form" name="form">  
<select name="item_name" value="<? $item_name ?>" size="4" id="item_name">
     <option value="">Item1</option>
     <option value="">Item2</option>
     <option value="">Item3</option>
     <option value="">Item4</option>
</select>
</form>
<div id="item_input"></div>
</html>
4

4 回答 4

4

select tags 不会触发keyupevent ,您应该change改用,尝试以下操作:

 $('#item_name').on('change', function() {
     clearTimeout(timer);
     var name = $(this).val();
     dataString = 'name='+ name;
     timer = setTimeout(submitForm, 050);
 });

 $('#item_input').html(result); 
于 2012-07-21T02:30:51.580 回答
1

看来您的 js 是正确的问题在于您的 html 部分。您没有提供选择列表值。请提供值以选择列表选项。

$(document).ready(function() {
     var timer = null; 
     var dataString;   
     function submitForm(){
       $.ajax({ type: "POST",
                url: "index.php",
                data: dataString,
                success: function(result){

                //$('#item_input').html( $('#resultval', result).html()); 
                //$('#special').text(result); 
                //$('#item_input').html( $('#resultval').html() + '<p>' + result + '</p>'); 
                $('#item_input').html(result); 

                }

       });
       return false;
     }


    $('#item_name').on('change', function() {
     clearTimeout(timer);
     var name = $(this).val();
     dataString = 'name='+ name;
     timer = setTimeout(submitForm, 050);
    });      

}); 

它应该是这样或您要发布的任何值

<select name="item_name" value="" size="4" id="item_name">
    <option value="item1">Item1</option>
    <option value="item2">Item2</option>
    <option value="item3">Item3</option>
    <option value="item4">Item4</option>
</select>
于 2012-07-21T05:19:39.820 回答
0

submitForm()使用事件触发,onchange以便每次值<select>更改时,它都会提交。

于 2012-07-21T01:48:23.393 回答
0

KeyUp 用于输入框和其他使用键盘的框。选择可以使用 onClick 或 onChange 的框,最好使用 onChange:

$('#item_name').change(function() {
             clearTimeout(timer);
             timer = setTimeout(submitForm, 050);
             var name = $("#item_name").val();
             dataString = 'name='+ name;
}

这对你有用。

祝你好运!

于 2012-07-21T02:42:00.853 回答