2013-02-25 4 views
1

Мне было интересно, если бы я мог спросить, была ли нажата определенная кнопка, чтобы она выполняла определенную функцию. Я знаю, что я мог бы разделить это на две отдельные функции, но я хочу знать, как это сделать.Зная, какая кнопка нажата в Javascript

Я поставлю свой код ниже.

function displaySort(form) { 
    var list = form.values.value.replace(/\s+/g, '') 
    list = list.split(/,/) 
    if (document.getElementById("fSort").form.input.id) { 
     list.sort()   
     var listAsString = list.join(", ") 
     form.sortedDisplay.value = listAsString 
    } else if (document.getElementById("rSort").form.input.id) { 
     list.sort(reverseCompare) 
     var listAsString = list.join(", ") 
     form.reverseSortedDisplay.value = listAsString 
    } 
    window.alert("Messed Up"); 
} 

function reverseCompare(s1, s2) { 
    if (s1 < s2) { 
     return +1 
    } else if (s1 == s2){ 
     return 0 
    } else { 
     return -1 
    } 
} 

форма:

<form> 
    <table> 
     <tr> 
      <td> 
       <input type="text" name="values" value=" Bob, Ted, Carol,   
       Bette, Alice, Peter " 
       onclick="if (this.value == this.defaultValue) this.value=''" 
       size="80" 
       /> 
       <input type="button" 
       onclick="displaySort(this.form)" 
       value="Sort" 
       id="fSort" 
       /> 
       <input type="button" 
       onclick="displaySort(this.form)" 
       value="Reverse Sort" 
       id="rSort" 
       /> 
       <input type="reset" 
       value="Reset Form" 
       /> 
      </td> 
     </tr> 
     <tr> 
      <td> 
       <input type="text" name="sortedDisplay" value="Sorted list will show here" 
       size="35" 
       readonly 
       style="font-size:24pt;font-weight:normal;" 
       /> 
      </td> 
     </tr> 
     <tr> 
      <td> 
       <input type="text" name="reverseSortedDisplay" 
       value="Reverse sorted list will show here" 
       size="35" 
       readonly 
       style="font-size:24pt;font-weight:normal;" 
       /> 
      </td> 
     </tr> 
    </table> 
</form> 
+1

как функция называется? –

+3

Вы запрашиваете нажатие кнопки, но я не вижу привязки для 'keyup',' keydown', 'keypress' или аналогичных. это то, к чему вы хотите привязываться? –

+0

@dfsq спасибо за его исправление. У меня были проблемы. –

ответ

2

Добавить параметр к кнопке функции:

function displaySort(form, button) 
{ ... 

И передать ссылку кнопку на него при нажатии:

<input type="button" 
    onclick="displaySort(this.form, this)" 
    value="Reverse Sort" 
    id="rSort" 
/> 
+0

что я вызываю в инструкции if, чтобы убедиться, что это правда? Я попробовал кнопку == document.getElementById ("fSort"). form.input.id Я попытался сделать кнопку var button =; –

+0

просто проверьте кнопка.id. Вы также можете передать идентификатор непосредственно: 'onclick =" displaySort (this.form, this.id) "' или даже передать логическое значение в: 'onclick =" displaySort (this.form, true) "и' onclick = "displaySort (this.form, false)" ' – jalynn2

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