Форма отправки создает автоматические изменения GET? - PullRequest
1 голос
/ 27 июня 2011

У меня есть форма поиска

<!-- SEARCH -->
<form name="search" class="search" action="/search/" method="get">
    <input type="text" size="20" name="keywords" class="searchfield" value="Search for Property" onclick="clearSearchField()" title="Enter search keywords here. Ex- project name, city, state, etc." />
    <input type="image" src="/media/images/elements/search_icon.png" alt="Search" title="Click here to search" class="searchbutton" />
</form>

Когда я отправляю, помимо ключевых слов, я получаю две дополнительные переменные x и y в строке запроса -

http://127.0.0.1/search/?keywords=Search+for+Property&x=6&y=7

Почему?

EDIT Изменение значения ключевых слов меняет значение x и y

http://127.0.0.1/search/?keywords=foo&x=0&y=0

Ответы [ 4 ]

2 голосов
/ 27 июня 2011

Использование type="image" отправит координаты x и y того места, где была нажата кнопка.

На самом деле в этом нет необходимости, если вам не нужна эта информация по какой-либо причине, если вам нужен внешний вид изображения, вы можете использовать CSS для его оформления или использовать тег <button>, который разрешает содержание HTML.

2 голосов
/ 27 июня 2011

Это потому, что вы злоупотребили <input type="image">, чтобы использовать кнопку отправки с фоновым изображением, вместо того, чтобы просто использовать <input type="submit"> со свойством CSS background-image.

<input type="image"> предназначен для предоставлениякарта изображения для конечного пользователя, где конечный пользователь может щелкнуть определенное место на изображении.Координаты x и y, которые вы видите, являются местоположением щелчка на карте изображения.

Используйте обычный <input type="submit"> со свойством CSS background-image.Например,

.searchButton {
    background-image: url('/media/images/elements/search_icon.png');
    width: 20px;
    height: 20px;
    border: 0;
    cursor: pointer;
}
0 голосов
/ 27 июня 2011

Он отправляется, потому что вы используете изображение типа ввода, почему?Точно не знаю, но вы можете вызвать отправку, используя событие onclick и Javascript:

<script language="javascript">
function submitMyForm() {
    document.search.submit();
}
</script>

<form name="search" class="search" action="/search/" method="get">
    <input type="text" size="20" name="keywords" class="searchfield" value="Search for Property" onclick="clearSearchField()" title="Enter search keywords here. Ex- project name, city, state, etc." />
    <img src="/media/images/elements/search_icon.png" onclick="submitMyForm()" title="Click here to search" class="searchbutton">
</form>
0 голосов
/ 27 июня 2011

Помимо прочего, запрос HTTP GET означает, что данные формы закодированы в последующем URL.Это определенное, ожидаемое поведение:

http://www.cs.tut.fi/~jkorpela/forms/methods.html#fund

… и вы передаете координаты X и Y от кнопки поиска «отправить», которая фактически является картой изображения.

...