Как встроить дополнительные плагины jQuery в Механика

Вы можете прослушать onBlur событие. Это происходит, когда пользователь покидает поле ввода. Итак, добавьте onBlur прослушиватель событий в поле ввода.

Например: для homePrice

<input
      type="text"
      id="input3-group1"
      className={styles.formControl}
      name="homePrice"
      // assign value as this.state.homePrice
      value={this.state.homePrice}
      // Add onBlur and use handleValidation event handler
      onBlur={this.handleValidation}
      onChange={this.handleStateChange}
      placeholder="Amount of home's selling price"
  />

// for testing add this line just below the input field 
// it will display form error              
{ this.state.formError && <span>{this.state.formError} </span> }

Теперь добавьте метод handleValidation в свой компонент

handleValidation = (e) => {
         let { value } = e.target
         // check if value is empty or not       
         if (value.trim().length === 0) {
            this.setState({formError: 'Input field is required'}) 
            return
         // check if value is number or not
         } else if (isNaN(Number(value))) {
            this.setState({formError: 'Input field value must be a number'}) 
            return
        } else {
            this.setState({ formError: ''})
        }
    } 

ОБНОВЛЕНИЕ

handleCostChange = (e) => {
        // for testing only not needed
        let { value } = e.target; 
        // Checking whether "e.target.value" on button is empty or not
        console.log('some',value,'text') // some text
        console.log(value.trim().length === 0)  // true

        const {
            homePrice,
            downPaymentAmt,
            termOfLoan,
            annualInterestRate,
        } = this.state;

        // updates
        if (homePrice.trim().length === 0) {
            this.setState({formError: 'Input Fields are required'}) 
            return
        } else if (isNaN(Number(homePrice))) {
            this.setState({formError: 'Input Fields must be number'}) 
            return
        }

        const principal = homePrice - downPaymentAmt;
        const lengthOfLoan = 12 * termOfLoan;
        const percentageRate = annualInterestRate / 1200;
        // Formula M = P[i(1+i)^n]/[(1+i)^n -1]
        const cost =
            (principal * percentageRate) /
            (1 - Math.pow(1 + percentageRate, lengthOfLoan * -1)).toString();
        this.setState({
            cost: cost.toFixed(2),
            // update
            formError: ''
        });
    };

А также измените

this.state = {homePrice: 0}

на

this.state = {homePrice: ''}

Это необходимо, потому что я использовал метод trim(), который является строковым методом. Поэтому, когда вы отправляете, не касаясь поля ввода, вы получите ошибку.

5
задан Carl 13 January 2009 в 15:10
поделиться

2 ответа

Во-первых, если Вы соглашаетесь с не наличием доступа отладки Firebug, самый легкий способ включать jQuery состоит в том, чтобы использовать потребовать настройки:

// @require        http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js
// @require        http://ajax.googleapis.com/ajax/libs/jqueryui/1.5.2/jquery-ui.min.js 

Следующий, что строка можно включать другие внешние сценарии. Большинство плагинов jQuery не доступно как API jQuery, но можно разместить его сами.

Используя требование также позволяет Вам выводить весь загружающийся код и просто идти с:

$(document).ready( function() { ... });

Firebug сообщит об ошибках, но Вы не сможете ступить в отладчик.

Кроме того, после того как Вам загрузили jQuery, можно загрузить другие объекты для симпатии так:

$('head').append("<link href='http://www.somewebsite.com/styles.css' type='text/css' rel='stylesheet'>"); 
11
ответ дан 18 December 2019 в 14:52
поделиться

Также контроль страницы GreaseMonkeyWiki при использовании JQuery в сценарии GreaseMonkey и на @require блоке.

2
ответ дан 18 December 2019 в 14:52
поделиться
Другие вопросы по тегам:

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