【问题标题】:Javascript strip after X characters prior to form submit表单提交前 X 字符后的 Javascript 剥离
【发布时间】:2017-02-21 09:07:04
【问题描述】:

更新** 使用下面提供的解决方案我添加了这个没有运气?

<script>
$('.LogIn_submit').on('click',function(){
    var value=$('#Log_In_group_2_FieldB').val();
    value=value.replace(/^\s\d{6}(?=\-)&/, '')
    alert(value);
});
</script>

这里是表单元素,希望这是一个简单的修复:

<input id="Log_In_group_2_FieldB" name="Log_In_group_2_FieldB" type="password" value="<?php echo((isset($_GET["invalid"])?ValidatedField("login","Log_In_group_2_FieldB"):"".((isset($_GET["failedLogin"]) || isset($_GET["invalid"]))?"":((isset($_COOKIE["RememberMePWD"]))?$_COOKIE["RememberMePWD"]:""))  ."")); ?>" class="formTextfield_Medium" tabindex="2" title="Please enter a value.">

<input class="formButton" name="LogIn_submit" type="submit" id="LogIn_submit" value="Log In"   tabindex="5">

/***** 开始问题******/

使用 this question/answers's fiddle 我可以看到他们是如何使用 javascript 的:

$('.btnfetchcont').on('click',function(){
    var value=$('#txtCont').val();
    value=value.replace(/^(0|\+\d\d) */, '')
    alert(value);
});

我目前有一个以 6 个字符开头、以短划线结尾且短划线后面最多可以有 3 位数字的值。

示例 1:123456-01

示例 2:123456-9

示例 3:123456-999

我尝试在 value.replace cod 中插入 - ,但没有成功。如何在提交时删除 - 以及之后的任何值,以便我只提交前 6 位数字?

【问题讨论】:

  • /^\d{6}(?=\-)$/ 这是您可以使用的正则表达式。
  • 如果您只想要前 X 个字符,则根本不需要正则表达式。查看@Loading 的答案..

标签: javascript jquery


【解决方案1】:

您可以使用 split 代替正则表达式

 value=value.split("-")[0];

修复你的正则表达式

/(-[0|\+\d\d]*)/g

function extractNumber(value){
  return value.replace(/(-[0|\+\d\d]*)/g, '');
}
console.log(extractNumber("123456-01"));
console.log(extractNumber("123456-9"));
console.log(extractNumber("123456-999"));

【讨论】:

  • 更新了问题,在我的实际示例中似乎不起作用,请参见上文
【解决方案2】:

您似乎只希望字符串中的前 6 个字符。

使用.split()substring(start, end) 获取字符串的各个部分。

var string = "123456-01";
console.log(string.split('-')[0]);
console.log(string.substring(0,6));
&lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"&gt;&lt;/script&gt;

【讨论】:

  • @RoccoTheTaco 如果您的要求始终是 6 个字符,请使用 .substring(0,6),如果您的要求始终是“连字符前”,请使用 .split('-')[0]
【解决方案3】:

编辑:.split('-') 的答案比以下更好,imo。

假设您总是只需要前 6 个字符,这样的事情应该可以满足您的需求:

$('.btnfetchcont').on('click',function(){
    var value = $('#txtCont').val();
    value = value.substr(0, 6);
    alert(value);
});

或将这两行合并:

var value = $('#txtCont').val().substr(0, 6);

了解.substr() here

如果您想在破折号之前获得所有内容,请执行以下操作:

var value = $('#txtCont').val().match(/(\d*)-(\d*)/);

value 现在是一个数组,其中value[0] 是原始字符串,value[1] 是破折号之前的每个数字,value[2] 是破折号之后的每个数字。

这仅适用于数字。如果您想要任何字符而不仅仅是数字,请将\d 替换为.。即:.match(/(.*)-(.*)/).

【讨论】:

  • 试过了,更新了问题让你看看,也许是我的错字?
  • @RoccoTheTaco 您刚刚放入更新中的正则表达式根本不正确 - 您到底想要做什么?获取前 6 个字符为 value 或从 value 中删除前六个字符?
  • 是的,我想在密码字段提交表单之前删除除前 6 个字符之外的所有内容。输入 id="Log_In_group_2_FieldB"
  • @RoccoTheTaco 然后使用value = value.substr(0, 6) - 不需要正则表达式。
  • 它似乎不起作用。你能用我在更新后的问题中提供的值更新你的答案,或者请做一个小提琴吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-01
  • 1970-01-01
相关资源
最近更新 更多