Я работаю над проектом, в котором использую заголовок организации на своем собственном веб-сайте. Веб-сайт организации построен на ASP.NET, о котором я ничего не знаю. Часть, которая сбила меня с толку, — заставить панель поиска в заголовке работать. Я пробовал следующее (с некоторыми анонимными вещами)

$(document).ready(function()
{
    /* Select the <a> element holding the search icon (usually a magnifying glass) 
       and set it as a variable: */
    var searchIcon = $('#id1');

    /* Set a variable equal to the prefix of the URL request: */
    var urlRequestPrefix = "http://www.orgname.com/search/Results.aspx?k=";

    /* Select the search <input> element and set it as a variable: */
    var searchInput = $('#id2');

    /* Make the <a> tag holding the search icon search for the input when clicked.
       Originally it has href="javascript:someFunction()"
    */
    searchIcon.attr('href', function()
    {
        window.location = urlRequestPrefix + searchInput.val();
    });
});

Но, к сожалению, по какой-то причине выполняется window.location = urlRequestPrefix + searchInput.val(); при загрузке страницы. Может кто-нибудь объяснить, почему и, возможно, помочь мне исправить это?

0
user4150427 17 Окт 2014 в 21:16

2 ответа

Из-за следующего кода он выполняет функцию. В то время как вы могли бы установить href = какое-то строковое значение.

Что он сделал: он только что оценил значение параметра href , в вашем случае это JS function, а ожидалось, что оно будет string. Поэтому при оценке он перенаправлялся на другую страницу, так как там есть window.location = ....

 searchIcon.attr('href', function()
    {
        window.location = urlRequestPrefix + searchInput.val();
    });

Это должно выглядеть следующим образом.

searchIcon.attr('href', urlRequestPrefix + searchInput.val());

Предположение: идентификатор <a> - "id1".

По сути, это устанавливает значение якоря «href» в нужное место. И при нажатии на это (конечным пользователем) это сделает window.location = urlRequestPrefix + searchInput.val();

0
Arindam Nayak 17 Окт 2014 в 21:39

Этот код запускается при загрузке документа, чтобы установить его в атрибут searchIcon, выполните searchIcon.attr('href', '#').click(function () { window.location = urlRequestPrefix + searchInput.val(); });

1
Nicolás Straub 17 Окт 2014 в 21:21
Можете ли вы объяснить, почему есть второй параметр «#»?
 – 
user4150427
17 Окт 2014 в 21:34
Attr при вызове с двумя аргументами присваивает второму аргументу значение первого. в данном случае он присваивает # значение атрибута href. Это позволяет вам иметь ссылку, которая никуда не указывает, что позволяет вам обрабатывать щелчок так, как вы хотите.
 – 
Nicolás Straub
18 Окт 2014 в 00:57