2015-04-26 4 views
0

Просто очень краткое объяснение того, что делает часть моего кода:Проверьте, чтобы увидеть, если кнопка нажата на ... не работает

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

ЧТО Пытаюсь DO: Я пытаюсь проверить, на какую кнопку нажал пользователь, чтобы соответствующий код был выполнен.

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

Вот мой код:

<script> 
 
    function show(x, y){ 
 
     
 
     <!-- Do something --> 
 
     
 
    } 
 
</script> 
 

 

 
<form> 
 
    <button name = "sButton" type = "button" onclick = 'show("searchForm", "insertForm");'>Perform Search</button> 
 
    <button name = "iButton" type = "button" onclick = 'show("insertForm", "searchForm");'>Insert Data</button> 
 
</form> 
 

 

 
<form id = "searchForm" value "search" style = "display: none;" action = "test2.php" method = "post"> 
 

 
    <!-- Do something --> 
 
    
 
</form> 
 

 
<form id = "insertForm" style = "display: none;" action = "test2.php" method = "post"> 
 

 
    <!-- Do something --> 
 
    
 
</form>

<!-- This is the test2.php page --> 
 

 
if(isset($_POST['sButton'])){ 
 
\t \t \t 
 
    <!-- Do something --> 
 

 
} 
 
else{ 
 
\t \t \t 
 
    <!-- Do something --> 
 

 
}

Чтобы проверить это, я имел, если заявление печать "Проверено" и еще печать «Не проверен ». Когда я запускаю свой код, он печатает «Not checked». Что я делаю неправильно и что мне делать?

Заранее благодарен!

+0

Теперь вы можете определить, какую кнопку нажали, проверив значения 'x' и' y' в функции 'show'? – sfletche

+0

Если вы дадите кнопкам имя, то тот, который нажал, будет отправлен вместе с формой. В качестве альтернативы слушатель может передать имя кнопки функции, используя 'show (" searchForm "," insertForm ", this.name)'. Почему кнопки в форме вообще? – RobG

+0

@sfletche Ummm Я так думаю? Мои кнопки работают так, как я хочу сейчас, поэтому я думаю, что все в порядке. – wuv1

ответ

1

Вы не передаете свои кнопки sButton или iButton в test2.php, потому что ваша вторая и третья формы не имеют их в качестве входных данных. Будут представлены только входные данные внутри каждой конкретной формы. и ваша форма, в которой есть кнопки, не действует, только кнопки вызывают функцию JS.

То, что я предлагаю вам сделать, это добавить скрытые поля для каждой формы, которые вы отправляете в test2.php следующим образом:

<form id = "searchForm" value "search" style = "display: none;" action = "test2.php" method = "post"> 
    <input type="hidden" name = "sButton" value="sButton" /> 
    <!-- Do something --> 

</form> 

<form id = "insertForm" style = "display: none;" action = "test2.php" method = "post"> 
    <input type="hidden" name = "iButton" value="iButton" /> 
    <!-- Do something --> 

</form> 

Таким образом, ваш test2.php должен работать.

+0

Спасибо за помощь! Это решило мою проблему. – wuv1

1

Добавить

<input type="hidden" name="sButton" /> 

в форме поиска и

<input type="hidden" name="iButton" /> 

в виде вставки.

После этого. Вам необходимо отправить (выбранную) форму в шоу (...) Javascript функция

+0

Благодарим за помощь! – wuv1

1

Применение this:

onclick = 'show(this.name, "searchForm", "insertForm");' 

Пример:

<button name = "sButton" type = "button" onclick = 'show(this.name, "searchForm", "insertForm");'>Perform Search</button> 


function show(name, x, y){ 

    alert(name); 

    if(name === "sButton"){ 
    do this.... 
    } 
} 

Выход:

sButton 

DEMO

http://codepen.io/tuga/pen/RPNaXY

+0

Благодарим за помощь! – wuv1

+0

Добро пожаловать @ wuv1 :) –

1

Я не уверен, что вы пытаетесь сделать, но я не вижу, почему кнопки в форме вообще. Рассмотрим присоединение слушателей динамически, добавляя имя или идентификатор кнопки, так что вы можете сказать, один нажал то скрыть или показать формы в зависимости от которых была нажата:

// The buttons don't seem to need to be in a form, so use some other 
// container so you don't need to worry about a useless form being 
// submitted 
<div id="buttonContainer"> 
    <button id="searchButton">Perform search</button> 
    <button id="insertButton">Insert data</button> 
</div> 

// Forms for testing 
<form id="searchForm"><input value="search"></form> 
<form id="insertForm"><input value="insert"></form> 

и код:

<script> 

// Hide and show forms depending on which button was clicked using the 
// button's ID 
function showForm(event) { 

    // If the search button was clicked, show the search form and hide the 
    // input form 
    if (/search/.test(this.id)) { 
    document.getElementById('searchForm').style.display = ''; 
    document.getElementById('insertForm').style.display = 'none'; 

    // If the insert button was clicked, do the opposite 
    } else { 
    document.getElementById('searchForm').style.display = 'none'; 
    document.getElementById('insertForm').style.display = ''; 
    } 
} 

// Attach listeners to the buttons 
window.onload = function() { 
    Array.prototype.forEach.call(document.querySelectorAll('#searchButton, #insertButton'), 
    function(button) { 
     button.addEventListener('click', showForm, false); 
    } 
); 

    // Hide the forms 
    Array.prototype.forEach.call(document.querySelectorAll('#searchForm, #insertForm'), 
    function(form) { 
     form.style.display = 'none'; 
    } 
); 
} 

</script> 
+0

Я думаю, что я искал, как создавать кнопки в Интернете, и несколько примеров/учебников, которые я видел, когда они были внутри форм. Спасибо за помощь! – wuv1

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