2009-09-21 58 views
1

我试图使用jQuery来结合用户的选择字段选择(类别+贡献者)并将其插入到具有as_q id的隐藏字段中,但是当我运行该脚本时,as_q的值总是空的。使用jQuery问题分配变量

目前,我在用户点击提交时调用该函数 - 它将得到两个选择字段的值并将它们合并,然后将它们分配给as_q字段 - 至少这是我的逻辑。

也许我错了吗?我目前的代码如下。任何帮助非常感谢,谢谢

<form action="<? echo $PHP_SELF;?>" method="get" id="cse-search-box"> 
    <input type="text" name="q" size="31"/> 
    <select name="category"> 
    <option>Movies</option> 
    <option>Film</option> 
    <option>Fashion</option> 
    </select> 
    <select name="contributors"> 
    <option>One</option> 
    <option>Two</option> 
    <option>Three</option> 
    </select> 
    <input type="hidden" name="as_q" id="as_q" value="" /> 
    <input type="submit" name="sa" value="Search" id="submit_query" /> 
</form> 

<script>  
    $('#submit_query').click(function(){ 
    var category = $('[name=category]').val(); 
    var contributors = $('[name=contributors]').val(); 

    $('[#as_q]').val(category+' '+contributors); 

    }); 
</script> 
+0

把你的代码放到一个测试页面结果它在FF3.5中工作正常。你能提供更多的细节吗? – Steerpike 2009-09-21 11:21:35

+0

我已经在部署服务器之外尝试了自己的测试页面,并且无法正常工作 - 我正在查看url中的as_q部分,该部分为空。 我可以问你如何测试这两个字段已合并为as_q?也许这会帮助我提供更准确的信息? – Gibset 2009-09-21 11:34:35

+0

我真的推荐使用pastehtml.com来解决这个问题。 http://pastehtml.com/view/090921UbqT7OfJ.html – itsadok 2009-09-21 11:48:10

回答

1

只是一个猜测 - 从获得摆脱的方括号...

$('[#as_q]').val(category+' '+contributors); 
+0

我在提交问题后意识到这一点,但这不是问题,谢谢 – Gibset 2009-09-21 10:55:05

0

不要把方括号“as_q”。另外,不要点击提交按钮来做到这一点。这不会涵盖表格可以提交的所有方式。相反,做到这一点的形式提交事件:

$("#cse-search-box").submit(function() { 
    var category = $('[name=category]').val(); 
    var contributors = $('[name=contributors]').val(); 
    $('#as_q').val(category+' '+contributors); 
}); 

注:调用form.submit()将绕过此处理过(在某些浏览器),但无论如何会绕过你的点击()事件。

+0

我原本是这样做的,但这似乎也不起作用。 两种方式都离开as_q空......我不是一个专家,所以在这里不知所措!任何进一步的帮助赞赏 – Gibset 2009-09-21 10:57:19

1

除了提出的其他建议:

1 - 把你的代码放到一个$(document).ready(...块。这可能是为什么它不起作用。

2 - 为了获得更好的性能而给出您的选择ID,attribute filters(如[name = blah])不是选择元素的最快捷方式。

$(document).ready(function() { 
    $('#submit_query').click(function(){ 
     var category = $('#category').val(); 
     var contributors = $('#contributors').val(); 
     $('#as_q').val(category + ' ' + contributors); 
    }); 
}); 
+0

感谢您的建议,我现在使用ID选择器。 我已经将代码包装到了doc ready块中,但仍然没有运气 - 真的很困惑,为什么这不起作用! – Gibset 2009-09-21 11:13:09

1

下面是测试代码,我使用的结果在你的代码中对我很好。

该文件称为sandbox.php(我提到这一点,因为这是真正未知的唯一的事情是,如果你给你的文件扩展名为.php)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
<!-- Above Doctype should provide S mode in Moz, Safari, Opera, IE8 and A (almost standards) in IE6/7 --> 
<head> 
    <meta http-equiv="Content-Type" content="application/text+html;utf-8"> 

    <title>Sandbox</title> 
    <link type="text/css" href="http://jqueryui.com/latest/themes/base/ui.all.css" rel="stylesheet"> 
    <script type="text/javascript" src="http://jqueryui.com/latest/jquery-1.3.2.js"></script> 
    <script src="http://dev.jquery.com/view/tags/ui/latest/ui/effects.core.js"></script> 

<script type="text/javascript"> 
    $(document).ready(function() { 
    $('#submit_query').click(function(){ 
    var category = $('[name=category]').val(); 
    var contributors = $('[name=contributors]').val(); 

    $('#as_q').val(category+' '+contributors); 
    }); 
    }); 

</script> 
</head> 
<?php 
if(isset($_REQUEST['as_q'])) { 
    echo $_REQUEST['as_q']; 
} 
?> 
<body class="calendarPage"> 
<form action="#" method="get" id="cse-search-box"> 
    <input type="text" name="q" size="31"/> 
    <select name="category"> 
    <option>Movies</option> 
    <option>Film</option> 
    <option>Fashion</option> 
    </select> 
    <select name="contributors"> 
    <option>One</option> 
    <option>Two</option> 
    <option>Three</option> 
    </select> 
    <input type="hidden" name="as_q" id="as_q" value="" /> 
    <input type="submit" name="sa" value="Search" id="submit_query" /> 
</form> 


    </body> 


</html> 
+0

对,谢谢 - 在开发服务器上使用你的代码,一切正常。据我所知,我的代码和你的代码之间的唯一区别是我正在开发的网站上使用的jQuery版本 - 1.2.6。 我不知道版本之间的差异,但我不会认为这是问题吗?除非包含在本地存储在服务器上的jquery已被编辑?我要调查并尝试获得更多信息! – Gibset 2009-09-21 11:54:01