2009-11-24 3 views
1

Я пытаюсь добавить окно поиска на свою страницу, которое направит пользователей на страницу результатов поиска на другом сайте. У меня есть действие и все остальные требуемые данные в скрытых полях, чтобы обеспечить правильную отправку.Добавление данных в поле ввода

Проблема в том, что они используют дополнительные данные для поиска, что делает его расширенным поиском типа поля. Таким образом, вместо поискаTerm = X ожидается, что searchTerm = Locale (en): FQE = (KE, None, 11) MY_SEARCH_TERM: И: LQE = (AC, None, 8) fulltext $

Как добавить это дополнительные данные вокруг моего поискового запроса, без необходимости посещать промежуточную страницу, чтобы выполнить конкатенацию?

Вот что я до сих пор:

<form action="http://vendors.address/searchresult.do" method="post"> 
    <input type="hidden" name="type" value="search"> 
    <input type="hidden" name="sort" value="DateDescend"> 
    <input type="text" name="queryId"> 
</form> 

И мне нужно что-то, что может привести к такого рода вещи:

<form action="http://vendors.address/searchresult.do" method="post"> 
    <input type="hidden" name="type" value="search"> 
    <input type="hidden" name="sort" value="DateDescend"> 
    <input type="hidden" name="queryId" value="Locale%28en%2C%2C%29%3AFQE%3D%28KE%2CNone%2C11%29MY_SEARCH_TERM_HERE%3AAnd%3ALQE%3D%28AC%2CNone%2C8%29fulltext%24"> 
</form> 

Любая помощь будет оценена.

ответ

1

Вы можете использовать Javascript, чтобы сделать это со скрытым полем поиска. В jQuery это будет примерно так:

$("input[name='queryId']").keyup(function() { 
    $("#hiddenField").val("Locale%28en%2C%2C%29%3AFQE%3D%28KE%2CNone%2C11%29" + $(this).val() + "%3AAnd%3ALQE%3D%28AC%2CNone%2C8%29fulltext%24"); 
}); 

Но это сломается без JS.

Редактировать: Да, избили, не обновлялись ответы.

+0

Надеюсь, что у вас не будет ответа JS, но это не ваша вина. Если это невозможно сделать в PHP, это невозможно. –

0

Две вещи, которые я могу думать:
1. Просто поместите локаль и прочее в скрытых входах:

<input type="hidden" name="locale" value="en" /> 

2. Используйте Javascript для отправки формы (это ужасная идея - вы не хотите, чтобы ваш сайт ломался, если Javascript отключен).

+0

Я думаю, что плакат просят способ конкатенации локаль и другие данные, наряду с реальным запросом, в одном поле (как ожидалось бы они ни используя бэкэнд). –

+0

Если они не хотят удалять промежуточный URL-адрес, который будет выполнять конкатенацию для них, то Javascript - это то, что осталось. Да, это не сработает для некоторых пользователей. –

+0

Да, я понял, что они хотели, но Javascript казался такой плохой идеей, что я должен был предложить альтернативу. –

1

Вы можете использовать JavaScript для конкатенации до отправки формы. Есть несколько способов сделать это, но вот рекомендуемый подход:

Поскольку я не вижу кнопку отправки, я предполагаю, что вы подсчитали своих пользователей, чтобы нажать клавишу ввода, чтобы отправить форму, чтобы вам нужно было прослушивать событие onSubmit и конкатенировать дополнительную информацию до отправки сообщения на сервер.

Дайте элемент формы идентификатор:
<form action="..." method="post" id="searchForm">

и дать поле ввода текста идентификатор:
<input type="text" name="queryId" id="queryId">

Добавить этот блок сценария после формы

 
<script> 
document.getElementById("searchForm").onSubmit = function(){ 
    var queryField = document.getElementById("queryId"); 
    queryField.value = "prepend_data" + queryField.value + "append_data"; 
    return true; 
} 
</script> 

Или в вы можете использовать JQuery (пожалуйста, сделайте это), вы можете оставить это в любом месте:

<script> 
$(function(){ 
    $("#searchForm") 
    .submit(
     function(){ 
     $("#queryId).val("prepend_data" + $(this).val() + "append_data"); 
     } 
    ); 
}); 
</script>

Надежда, что помогает

Смежные вопросы