我在laravel和php中有一个项目,并且在视图中有一个输入,其中我写了一个字符串 10 个字符,其他输入的最大值是 1 。当我在第一个输入中写一个数字时,另一个输入必须满足第一个输入的最后一个字符。
例如:
<form action="{{route('admin.store', $admin)}}" method="POST">
<input type="text" maxlength="10" minlength="9" id="number">
<input type="text" maxlength="1" id="last">
<input type="submit" value="APPLY CHANGES" onclick="return FillTextBox()">
</form>
如果我写的是 2341325432 ,则第二个输入必须满足值 2 ,因为 2 是第一个输入的最后一个字符输入。
我尝试过此操作,但无法完全正常工作。
因为在我的控制器dd($ request-> last)中的laravel中返回空值。
<script type="text/javascript">
function FillTextBox(){
var string = document.getElementById('number').value;
document.getElementById('last').value = string.charAt(string.length-1);
}
</script>
为什么我的功能无法正常工作?我试图用按钮捕获事件,或者也许我可能会尝试在在第一个输入中输入值后捕获。
答案 0 :(得分:1)
如果由于加载顺序而将JavaScript设置为执行on load或在DOM ready上执行,则您的代码将无法工作。如果将其交换为位于<head>
或<body>
的底部,它将按预期工作:
function FillTextBox() {
var string = document.getElementById('number').value;
document.getElementById('last').value = string.charAt(string.length - 1);
}
<form action="new_tab.php" target="_blank" method="POST">
<input type="text" maxlength="10" minlength="9" id="number">
<input type="text" readonly="read" maxlength="1" id="last">
<input type="submit" value="APPLY CHANGES" onclick="return FillTextBox()">
</form>
为防止这种情况,您应该真正通过添加 unobtrusive JavaScript 来使用 event listeners ,而不要使用onclick
property:
document.getElementById('submit').addEventListener('click', function() {
var string = document.getElementById('number').value;
document.getElementById('last').value = string.charAt(string.length - 1);
});
<form action="new_tab.php" target="_blank" rel="noopener noreferrer" method="POST">
<input type="text" maxlength="10" minlength="9" id="number">
<input type="text" readonly="read" maxlength="1" id="last">
<input id="submit" type="submit" value="APPLY CHANGES">
</form>
除此之外,在使用target=_"blank"
时,您还需要向表单中添加rel="noopener noreferrer"
以防止 "Target Blank" vulnerability 。我已将其添加到以上示例中。
答案 1 :(得分:1)
我已经在表单字段中添加了 name 属性,以便在php代码上获取它:
<form action="test.php" target="_blank" method="POST">
<input type="text" maxlength="10" name="number" minlength="9" id="number">
<input type="text" maxlength="1" name="last" id="last">
<input type="submit" value="APPLY CHANGES" onclick="return FillTextBox()">
</form>