Javascript 无法从输入中删除字符
我正在调试一个由其他人构建的项目,出现了一个奇怪的问题,其中一个表单框无法删除最后一个字符 代码使用了两个JS文件,一个主要使用React,另一个使用jQuery(我听说这是一个被外包的遗留项目,其他人只是将React放在上面) 现在,因为代码有8000行长,所以对我来说调试起来比较困难(特别是当它们的名字都一样的时候…) 我想知道是否有人有什么建议?我检查了状态,可以看到表单输入的值正在更改(如果单词“hello”在那里,我一直删除到“h”,然后再次删除,“h”仍然保留在框中,但“h”从“value”字段和状态中消失) 我怀疑这是jQuery的问题,但我没有看到任何修改表单输入字段值的内容 我注意到的另一件事是,我不能CTRL+Delete或高亮显示all和Delete(它适用于其他框) 下面是输入的React代码片段Javascript 无法从输入中删除字符,javascript,jquery,forms,reactjs,input,Javascript,Jquery,Forms,Reactjs,Input,我正在调试一个由其他人构建的项目,出现了一个奇怪的问题,其中一个表单框无法删除最后一个字符 代码使用了两个JS文件,一个主要使用React,另一个使用jQuery(我听说这是一个被外包的遗留项目,其他人只是将React放在上面) 现在,因为代码有8000行长,所以对我来说调试起来比较困难(特别是当它们的名字都一样的时候…) 我想知道是否有人有什么建议?我检查了状态,可以看到表单输入的值正在更改(如果单词“hello”在那里,我一直删除到“h”,然后再次删除,“h”仍然保留在框中,但“h”从“va
render: function() {
if( this.state.theData.length ) {
return (
<div id="to-airport-wrapper" className="wrapper">
<label htmlFor="to-airport" className="clear-inline-block">
{LEXICON.to}
<span className="sr-only">{LEXICON.cityOrAirport}</span>
<span id="wcag-to-airport" className="sr-only">{LEXICON.wcagFromToAirportLabel}</span>
<ToAirportLabel hasError={this.state.error}/>
</label>
<div id={"TO_LAW_"+this.props.groupIndex} className="list-airport-wrapper">
<input type="text" id="to-airport" className="from-to-airport full-width" name="to-airport"
onFocus={this.onFocus} onChange={this.change} placeholder={LEXICON.cityOrAirport}
aria-required="true" aria-autocomplete="list" autoComplete="off"
data-airportcode={this.state.airportcode} value={this.state.value}/>
<ul data-type="to-airport" className="list-airport list-unstyled">
{
this.state.data.map(function(item, i) {
return <li key={i} className="list-airport-item" data-shortname={item.shortName} data-airportcode={item.airportCode} tabIndex="-1"><span>{item.name}</span></li>
})
}
</ul>
</div>
</div>
);
} else {
return (
<div id="to-airport-wrapper" className="wrapper">
<label htmlFor="to-airport" className="clear-inline-block">{LEXICON.to}</label>
<div className="list-airport-wrapper">
<input type="text" id="to-airport" className="from-to-airport full-width" name="to-airport" onChange={this.change} disabled="true" aria-autocomplete="list" data-airportcode="" placeholder={LEXICON.cityOrAirport} autoComplete="off" value="" />
</div>
</div>
);
}
}
当我尝试删除表单输入中的最后一个字符时,TO值的console.log会过早消失。附加代码中有几个输入字段和其他标记。您是否可以删除不相关的字段,只保留与您的问题相关的内容?您的附加代码中有多个输入字段和其他标记。您能否删除不相关的字段,只保留与您的问题相关的内容?
change: function(event) {
GLOBAL.ToAirportSetAirportCode('', '');
console.log("TO VALUE!", event.target.value)
if( event.target.value ) {
var jsObjects = this.state.theData;
var result = jsObjects.filter(function( obj ) {
var airportName = obj.name.replace('(','\\(').replace(')','\\)');
var eventTargetValue = event.target.value.replace('(','\\(').replace(')','\\)');
return airportName.toLowerCase().search( eventTargetValue.toLowerCase() ) !== -1;
});
if( result.length > 0 ) {
$("#TO_LAW_"+this.props.groupIndex+ " ul").show();
this.setState({
data: result,
value:event.target.value
});
} else {
this.setState({
value:event.target.value
});
$("#to-airport + ul").hide();
}
} else {
this.setState({
data: this.state.theData,
value: event.target.value
});
}
if( event.target.value == "" || result.length == 0 ) {
this.reset(event.target.value);
}
}