Изменение значения мобильной кнопки jQuery с помощью jQuery

Я обычно просто ввожу:

gcm notepad

или

gcm note*

gcm является псевдонимом по умолчанию для Получать-команды.

В моей системе, gcm отмечают* выводы:

[27] » gcm note*

CommandType     Name                                                     Definition
-----------     ----                                                     ----------
Application     notepad.exe                                              C:\WINDOWS\notepad.exe
Application     notepad.exe                                              C:\WINDOWS\system32\notepad.exe
Application     Notepad2.exe                                             C:\Utils\Notepad2.exe
Application     Notepad2.ini                                             C:\Utils\Notepad2.ini

Вы получаете каталог и команду, которая соответствует тому, что Вы ищете.

25
задан FelipeAls 25 February 2012 в 15:21
поделиться

6 ответов

Обновление 2
Я работал над скрипкой для другого вопроса и заметил, что разметка с jQuery Mobile 1.0b2 немного отличается:

<div data-theme="b" class="ui-btn ui-btn-corner-all ui-shadow ui-btn-down-b ui-btn-hover-b" aria-disabled="false">
    <span class="ui-btn-inner ui-btn-corner-all">
        <span class="ui-btn-text">Show Submit Button</span>
    </span>

    <input type="button" name="answer" id="myButton" data-theme="b" data-answer="4" value="next" class="ui-btn-hidden" aria-disabled="false">
</div>

С этой разметкой вам нужно будет сделать следующее, чтобы изменить текст кнопки:

$('#myButton').prev('span').find('span.ui-btn-text').text("Next Text"); 
<час>

Обновление
Кредит где следует отдать должное - Как выяснилось, ответ @ naugtur на этот вопрос, который содержал ту же самую точку зрения, что и мое редактирование, был опубликован до , когда я нашел способ исправить свой первоначальный ответ. ]


Я не очень знаком с jQuery Mobile, и тот факт, что вы использовали <input> для кнопки, не регистрировался, когда я первоначально ответил. Вот мой обновленный ответ с рабочим примером, показывающим, как вы можете это сделать.

В случае <input type="button" /> jQuery Mobile, кажется, скрывает элемент <input> и создает новый элемент <a>, стилизованный под кнопку. Вот почему, когда вы пытаетесь получить и установить текст с помощью идентификатора <input> в качестве селектора, он не работает, так как у этого <span> нет текста, который вы видите на экране. Сгенерированная разметка выглядит примерно так

<!-- This 'a' button is added dynamically by jQuery Mobile, for the input element that follows it -->
<a role="button" href="#" data-theme="c" class="ui-btn ui-btn-corner-all ui-shadow ui-btn-up-c">
    <span class="ui-btn-inner ui-btn-corner-all">
        <span class="ui-btn-text">My Value</span>
    </span>
</a>

<input type="button" data-role="button" value="My Value" id="myButton" name="answer" class="ui-btn-hidden ui-btn ui-btn-up-c ui-btn-corner-all ui-shadow" tabindex="-1" data-theme="c">
    <span class="ui-btn-inner ui-btn-corner-all">
        <span class="ui-btn-text"></span>
    </span>
</input>

Я не пробовал достаточно примеров, чтобы быть полностью уверенным, но это должно сработать

$("#myButton").prev('a').find('span.ui-btn-text').text("New Text")

Вот a рабочий пример, показывающий, как изменить текст для кнопок обоих типов (<a> и <input type="button">).

Я бы не рекомендовал использовать это над кнопками <a>, если вы можете помочь, хотя, поскольку нет id, и мой подход, по крайней мере, основан на том факте, что <a> соответствует <input type="button" /> появляется перед элементом <input>.

12
ответ дан 28 November 2019 в 20:53
поделиться

Поскольку jQuery mobile генерирует HTML вокруг вашего элемента input type = "button" , и текст, который вы видите, на самом деле не значение кнопки, а текст внутри сгенерированного ] диапазон . Вы можете либо пройти через DOM в поисках фактического диапазона, либо сказать jQuery повторно сгенерировать HTML-код кнопки, вызвав .button («refresh»), например так:

$("#MyButton").val("changed value");
$("#MyButton").button("refresh");

Последнее рекомендуется, так как оно будет оставайтесь совместимыми с будущими версиями jQuery mobile, при этом обход DOM может прекратиться, если команда jQuery решит изменить структуру HTML-кода, сгенерированного для кнопки.

32
ответ дан 28 November 2019 в 20:53
поделиться

[устарело]

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

$('#myButton').parent().find('.ui-btn-text').text('zzzzz');

Если кнопка input не нужна для использования приложения без наличия JavaScript (или вы не хотите, чтобы оно работало без javascript) тогда вы всегда должны использовать теги <a>, потому что они могут быть контейнерами.

6
ответ дан 28 November 2019 в 20:53
поделиться

С jquery.mobile-1.1.0 я испытал что-то немного другое, и мне было трудно просеять ответы, чтобы найти работоспособный ответ. Я задокументировал проблемы, с которыми столкнулся, и решение, которое нашел ниже.

Фрагмент 1

<script type="text/javascript">
 $('#task').live('pageinit', function() {
    $('#checkin_button').html("Check-in to receive points");
  });
</script>

С этим я могу изменить текст, но метод очищает добавленные промежутки и классы, таким образом сжимая кнопку.

button image

HTML

<div id="task_button">
 <a data-role="button" id="checkin_button" data-transition="slide" data-theme="b" href="#task-success" data-icon="check" data-corners="true" data-shadow="true" data-iconshadow="true" data-iconsize="18" data-wrapperels="span" class="ui-btn ui-shadow ui-btn-corner-all ui-btn-icon-left ui-btn-up-b">
 Check-in to receive points
 </a>
 </div>

Фрагмент 2

<script type="text/javascript">
 $('#task').live('pageinit', function() {
    $('#checkin_button').val("Check-in to receive points");
  });
</script>

Это никак не повлияло на текст кнопки.

button image

HTML

<div id="task_button">
  <a data-role="button" id="checkin_button" data-transition="slide" data-theme="b" href="#task-success" data-icon="check" data-corners="true" data-shadow="true" data-iconshadow="true" data-iconsize="18" data-wrapperels="span" class="ui-btn ui-shadow ui-btn-corner-all ui-btn-icon-left ui-btn-up-b">
    <span class="ui-btn-inner ui-btn-corner-all">
      <span class="ui-btn-text">
      Original Text.
      </span>
    <span class="ui-icon ui-icon-check ui-icon-shadow ui-iconsize-18">&nbsp;
 </span>
</span>
</a>
</div>

Фрагмент 3

<script type="text/javascript">
 $('#task').live('pageinit', function() {
    $('#checkin_button').val("Check-in to receive points").button("refresh");
  });
</script>

Это сгенерировано следующее сообщение об ошибке:

не может вызвать методы для кнопки до инициализации; попытался вызвать метод refresh

, что меня смутило, потому что эта функция вызывается только после инициализации страницы. Читая далее, я заметил замечание Приянка о рабочем ответе на stackoverflow.com/a/7279843/61821

Фрагмент 4 - Работающий

<script type="text/javascript">
 $('#task').live('pageinit', function() {
    $('#checkin_button .ui-btn-text').val("Check-in to receive points");
  });
</script>

Лучший jQuery селектор работает как шарм.

0
ответ дан 28 November 2019 в 20:53
поделиться

это очень легко, есть способ для этого, кнопка («обновить»)

$('#mybutton').val('new Value').button('refresh');

удачи!

0
ответ дан 28 November 2019 в 20:53
поделиться

Обновлен следующие работы для меня (аналогично ответу от Ковача):

$('#MyButton').html('changed value').button('refresh');

или

$("#MyButton").val("changed value").button("refresh");
-2
ответ дан 28 November 2019 в 20:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: