如果包含表单标记,则jquery无法识别选项列表文本

时间:2013-02-03 21:36:04

标签: javascript jquery html forms

我正在尝试使用jquery将选定的选项文本发送到网址,但每当我在<form></form>标记之间包装表单时,它就会停止工作并发送值而不是文本。如果我删除表单标签,它的行为与我期望的方式相同。

我想知道是否有任何方法可以在不排除表单标记的情况下使其工作

谢谢!

<form>
    <select name="brand" id="brand" class="update">

        <option value="">Seleccionar</option>

        <?php if (!empty($list)) { ?>

            <?php foreach($list as $row) { ?>

                <option value="<?php echo $row['id']; ?>">

                    <?php echo $row['name']; ?>

                </option>

            <?php } ?>

        <?php } ?>

    </select>

    <select name="model" id="model" class="update" disabled="disabled">
        <option value="">----</option>
    </select>

    <select name="size" id="size" class="update" disabled="disabled">
        <option value="">----</option>
    </select>

    <input type="submit" value="Search" id="submit">

</form>

    </div>
    </div>
    <script src="js/jquery-1.6.4.min.js" type="text/javascript"></script>

    <script src="js/core.js" type="text/javascript"></script>

    <script type="text/javascript">
      $(document).ready(function(){
       $('#submit').click(function(){
        var brand = $('#brand option:selected').text();
        var model = $('#model option:selected').text();
        var size = $('#size option:selected').text();
        location.href ='index.php?s='+brand+'+'+model+'+'+size+'';
       });
      });
    </script>

2 个答案:

答案 0 :(得分:2)

表单正在提交,您需要阻止:

$(document).ready(function(){
   $('#submit').click(function(e){
    e.preventDefault();
    var brand = $('#brand option:selected').text();
    var model = $('#model option:selected').text();
    var size = $('#size option:selected').text();
    location.href ='index.php?s='+brand+'+'+model+'+'+size+'';
   });
});

答案 1 :(得分:0)

您需要从事件处理程序返回false以阻止表单提交。

添加

return false;

最后。 (你也可以做adeneo的回答所说的;要么应该有效。)