2009-09-21 37 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