Как определить & ldquo; внутреннюю кнопку вращения & rdquo; нажмите с помощью JS / jQuery?

По крайней мере, для меня подход signal(SIGSEGV ...), упомянутый в другом ответе, не работал на Win32 с Visual C ++ 2015. Что сделал для меня, было использовать _set_se_translator(), найденный в eh.h , Он работает следующим образом:

Шаг 1) Убедитесь, что вы включили Да с исключениями SEH (/ EHa) в Свойства проекта / С ++ / Генерация кода / Включить исключения C ++ , как указано в ответ Владимир Фрицкий .

Шаг 2) Вызовите _set_se_translator(), передав указатель функции (или лямбда) для нового исключения translator . Он называется переводчиком, потому что он в основном просто берет исключение низкого уровня и перебрасывает его как нечто более легкое для захвата, например std::exception:

#include <string>
#include <eh.h>

// Be sure to enable "Yes with SEH Exceptions (/EHa)" in C++ / Code Generation;
_set_se_translator([](unsigned int u, EXCEPTION_POINTERS *pExp) {
    std::string error = "SE Exception: ";
    switch (u) {
    case 0xC0000005:
        error += "Access Violation";
        break;
    default:
        char result[11];
        sprintf_s(result, 11, "0x%08X", u);
        error += result;
    };
    throw std::exception(error.c_str());
});

Шаг 3) Поймать исключение, как вы обычно:

try{
    MakeAnException();
}
catch(std::exception ex){
    HandleIt();
};
2
задан Caleb Goodman 2 March 2019 в 00:31
поделиться

2 ответа

Вы только что установили placeholder ... Вы также должны установить начальный value.

<input type="number" placeholder="2.50" step="0.50" value="2.50" id="myInput">

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

И использовать событие change ... Не input, потому что оно срабатывает при каждой ключевой записи.

Last ... Чтобы получить два десятичных знака, «хитрость» состоит в том, чтобы проанализировать значение input, используя .parseFloat() и установить десятичные дроби с помощью .toFixed() . [тысяча сто двадцать семь]

var input_changed = false;

$('#myInput').on('change', function() {
  input_changed = true;
  $(this).val( parseFloat($(this).val()).toFixed(2) )
});

$("#check").on("click",function(){
  if(!input_changed){
    console.log("0.00");
  }else{
    console.log( $('#myInput').val() );
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<input type="number" placeholder="2.50" step="0.50" value="2.50" id="myInput">

<button id="check">What the value? (like on submit)</button>

<час> РЕДАКТИРОВАТЬ

[ 1130] если бы мне удалось увеличить входные данные их заполнителем ...

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

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

$('#myInput').on('change', function() {
    value = parseFloat($(this).val());
    placeholder = parseFloat($(this).attr("placeholder")) || "";
    
    if(placeholder != ""){
        value = value + placeholder;
        $(this).attr("placeholder", "");
    }
    
    $(this).val( value.toFixed(2) )
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<input type="number" placeholder="2.50" step="0.50" id="myInput">

Или, может быть, вы хотите использовать только заполнитель и никогда не иметь значения? [1117 ]
Здесь альтернатива:

$('#myInput').on('change', function() {
    var value = parseFloat($(this).val());
    var placeholder = parseFloat($(this).attr("placeholder")) || 0;
    var newPlaceholder = value + placeholder;
    
    $(this).attr("placeholder",newPlaceholder.toFixed(2) );
    $(this).val("").blur();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<input type="number" placeholder="2.50" step="0.50" id="myInput">

0
ответ дан Louys Patrice Bessette 2 March 2019 в 00:31
поделиться

Используйте два <input>s

HTML

Следующая демонстрация имеет <input type='text'> для отображения значения и <input type='number'> размер счетчика, который перекрывает другой вход. Поскольку type="number" не отображает этот формат: 2.50 при использовании счетчика, a type="text" может, но также будет принимать буквы. Чтобы предотвратить ввод букв, добавляются атрибуты [pattern] и [required]. Эти атрибуты действуют только при событии submit. Тег <form> был добавлен, поскольку для события submit требуется тег <form>.

CSS

A <fieldset> оборачивается вокруг всех элементов управления формой и назначается position: relative. Всем элементам управления формы назначены свойства position:absolute и заданы свойства top и left. Ввод числа назначается z-index: 1, поэтому он получает щелчки пользователя. Обратите внимание, что пунктирная схема может быть удалена, это просто для демонстрационных целей.

jQuery

При щелчке по type="number" его начальное значение 2.50 преобразуется в действительное число, а затем применяется к входу type="text", который, в свою очередь, отображает значение в виде строки в n.nn формат.


Демо

$('#in1').on('click', function() {
  var base = parseFloat($(this).val());
  $('#in2').val(base.toFixed(2))
});
html,
body {
  width: 100%;
  height: 100%;
  font: 400 16px/1.5 Consolas;
}

fieldset {
  position: relative;
  width: 50%;
  height: 1.5rem;
  border: 0;
  padding: 0;
}

#in1 {
  position: absolute;
  display: inline-block;
  width: 1rem;
  height: 1rem;
  top: calc(50% - 0.75rem);
  left: 4.5rem;
  z-index: 1;
  outline: 1px dashed red;
}

#in2 {
  position: absolute;
  display: inline-block;
  width: 5rem;
  height: 1rem;
  line-height: 1.5rem;
  top: calc(50% - 0.75rem);
  left: 0.5rem;
  padding-left: 5px;
  font: inherit;
}

[type=submit] {
  position: absolute;
  display: inline-block;
  line-height: 1.35rem;
  height: 1.35rem;
  top: calc(50% - 0.75rem);
  left: 5.85rem;
  padding-top: 2px;
}
<form id='main'>
  <fieldset>
    <input id='in2' type='text' placeholder='2.50' pattern='[-0-9]+?|[-0-9]*?\.[0-9]+?' required autocomplete='off'>
    <input id='in1' type="number" value="2.50" step="0.50">
    <input type='submit'>
  </fieldset>
</form>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

0
ответ дан zer00ne 2 March 2019 в 00:31
поделиться
Другие вопросы по тегам:

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