我有在第5位和第12位数字后添加破折号的代码,但是在删除这些数字时,按退格键后不会删除破折号。 删除最后一位后,卡住了。
这是我从堆栈链接之一实现的代码。
EditText Cnic;
int maxLength = 15;
int len =0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Cnic = (EditText)findViewById(R.id.cnic_edtext);
Cnic.setFilters(new InputFilter[] {new InputFilter.LengthFilter(maxLength)});
Cnic.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
String str = s.toString();
if(s.length() == 5 || s.length() == 13){
str += "-";
Cnic.setText(str);
Cnic.setSelection(str.length());
}
}
@Override
public void afterTextChanged(Editable s) {
String str = s.toString();
len = str.length();
}
});
}
答案 0 :(得分:0)
我记得前一段时间尝试做类似的事情。您首先需要检查对文本所做的更改是否已删除。。您还必须将EditText的文本设置为原始位置的子字符串。 >,这样,“-”就不属于其中。我在下面对您的代码进行了更改。
在下面检查我的代码,如果还有其他问题,请在下面发表评论。
int length = 0;
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
length = Cnic.getText().toString().length();
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
int new_length = Cnic.getText().toString().length();
//The length has decreased, meaning that something was deleted.
if(length > new_length){
String str = s.toString();
if(s.length() == 5 || s.length() == 13){
//This sets the text to what was in the EditText, except it excludes the '-'
Cnic.setText(str.subString(0, s.length()-2));
Cnic.setSelection(str.length());
}
}else{
//The action that happened was not a delete, so just add the dashes to the text.
String str = s.toString();
if(s.length() == 5 || s.length() == 13){
str += "-";
Cnic.setText(str);
Cnic.setSelection(str.length());
}
}
}
@Override
public void afterTextChanged(Editable s) {
String str = s.toString();
len = str.length();
}
如果这不起作用,请尝试将代码从onTextChanged放到afterTextChanged中,看是否可行。我认为这个答案应该有用。
答案 1 :(得分:0)
我使用库name
let $thisBtn = $(this);
let formData = new FormData();
let $thisRow = $thisBtn.closest("tr");
$thisRow.find("input[name], select[name]").each(function() {
formData.append(this.name, $(this).val());
});