2009-12-18 7 views
138

मैं प्रपत्र एक ड्रॉप डाउन मेनू से चयनित मूल्य के आधार पर कार्रवाई को बदलने के लिए कोशिश कर रहा हूँ ...जावास्क्रिप्ट - चयन के आधार पर फॉर्म क्रिया बदलें?

मूल रूप से, एचटीएमएल इस तरह दिखता है:

<form class="search-form" id="search-form" method="post" accept-charset="UTF-8" action="/search/user"> 
<select id="selectsearch" class="form-select" name="selectsearch"> 
<option value="people">Search people</option> 
<option value="node">Search content</option> 
</select> 

<label>Enter your keywords: </label> 
<input type="text" class="form-text" value="" size="40" id="edit-keys" name="keys" maxlength="255" /> 

<input type="submit" class="form-submit" value="Search" id="edit-submit" name="search"/> 
</form> 

"लोगों को" चुना जाता है, (जो डिफ़ॉल्ट रूप से होता है), कार्रवाई "/ search/user" होनी चाहिए, और यदि सामग्री का चयन किया गया है, तो कार्रवाई "/ search/content" होनी चाहिए

मैं अभी भी चारों ओर खोज रहा हूं, लेकिन नहीं किया गया है यह जानने में सक्षम है कि यह कैसे करें ...

उत्तर

253
$("#selectsearch").change(function() { 
    var action = $(this).val() == "people" ? "user" : "content"; 
    $("#search-form").attr("action", "/search/" + action); 
}); 
+0

यह वही तरीका है जो मैं कोशिश कर रहा था ... धन्यवाद – n00b0101

+1

सही काम किया। धन्यवाद। मैंने फॉर्म कोड के बजाय सबमिट पर कार्रवाई को बदलने के लिए इस कोड को अपडेट किया। – Ryan

+0

बहुत अच्छा! इससे बहुत मदद मिली! – Alex

-14

आवश्यक है कि आपके पास एक फॉर्म है? निम्न JavaScript साथ

<div> 
    <input type="hidden" value="ServletParameter" /> 
    <input type="button" id="callJavaScriptServlet" onclick="callJavaScriptServlet()" /> 
</div> 

: बल्कि

function callJavaScriptServlet() { 
    this.form.action = "MyServlet"; 
    this.form.submit(); 
} 
+14

this.form.submit(); इसका कोई मतलब नहीं होगा क्योंकि वास्तव में कोई रूप नहीं है - जमा करने के लिए कुछ नहीं – SET

22

आप केवल फ़ॉर्म की ऐसी गतिविधि को बदलने के लिए, मैं कार्रवाई पर फार्म के लिये भेज बदल रहा पसंद करते हैं चाहते हैं,
यदि नहीं, तो आप इस इस्तेमाल कर सकते हैं इनपुट-परिवर्तन की तुलना में। यह केवल एक बार आग लगती है।

$('#search-form').submit(function(){ 
    var formAction = $("#selectsearch").val() == "people" ? "user" : "content"; 
    $("#search-form").attr("action", "/search/" + formAction); 
}); 
0

यह

$('#search-form').setAttribute('action', '/controllerName/actionName'); 
बजाय

$('#search-form').attr('action', '/controllerName/actionName'); 

उपयोग करना बेहतर है तो, trante के उत्तर के आधार पर हमने:

$('#search-form').submit(function() { 
    var formAction = $("#selectsearch").val() == "people" ? "user" : "content"; 
    $("#search-form").setAttribute("action", "/search/" + formAction); 
}); 

setAttribute का उपयोग करके आप एक बहुत बचा सकता है समय की संभावना है।

संबंधित मुद्दे