gpt4 book ai didi

javascript - 动态创建的文本字段的访问值

转载 作者:行者123 更新时间:2023-11-30 11:16:10 26 4
gpt4 key购买 nike

我有一个网页要求用户输入网络数量。根据用户提供的数量,它创建相应数量的文本输入字段。用户然后在这些新创建的框中输入网络地址,当用户单击验证时,它会 ping 每个网络。

现在,我设法完成了输入字段的动态创建,但现在我无法访问它们的值。请参阅下面的代码和 jsfiddle:

HTML:

<div ng-app>
<div ng-controller="Controller">
<div class="form-group" id = "numNetDiv" style="display:block">
<div class="col-sm-3">
<label for="numNetworks">Number of Networks</label>
<input id="numNetworks" ng-model="numNetworks"
ng-change="addNetworkFields()" type="text"
class="form-control" required />
<div class="col-sm-3" id="container" style="margin-left: 50px">
</div>
</div>
</div>

<div class="form-group" id = "checkNetsDiv" style="display:block">
<div>
<button id="checkNets" type="button" class="btn btn-nets"
style="margin-left: 100px"
ng-click="checkNets()">
Validate
</button>
</div>
</div>
<p id="demo"></p>
</div>
</div>

Angular :

// Add input boxes based on # of networks
function Controller($scope){
$scope.count=0;
$scope.addNetworkFields = function() {
var number = document.getElementById("numNetworks").value;
console.log(number);
var container = document.getElementById("container");
while (container.hasChildNodes()) {
container.removeChild(container.lastChild);
}
for (i=0;i<number;i++){
container.appendChild(document.createTextNode("Network" + (i+1) + ": "));
var input = document.createElement("input");
input.type = "text";
container.appendChild(input);
container.appendChild(document.createElement("br"));
}
}
// Run ping on each subnet
$scope.checkNets = function() {
console.log('Click!')
var number = document.getElementById("numNetworks").value;
for (i=0;i<number;i++){
//Access each networks and run ping on each one after another

// Call below for each network to perform ping
var ping = $.param({network: $scope.network[i]}); // [i] to access each network? Just an idea
$http({
url: 'https://' + location.hostname + '/ping_network',
method: "POST",
data: ping
})
.then(function(response) {
$scope.pingResult = response.data;
})

}
}

}

https://jsfiddle.net/Lwy378ce/137/

我知道 POST 有效,我遇到的唯一问题是一个接一个地访问每个网络并在其上调用该 POST。为了进行测试,我们可以去掉整个 POST 代码并将其替换为类似 console.log(network[i]) 的内容,然后查看控制台是否可以列出所有网络。

谢谢达蒙

最佳答案

如果您只使用表单和 Angular js 模型,将会简单得多。您可以使用 ng-repeat 创建您的字段,将这些输入字段的 ng-model 设为网络地址,然后使用这些地址进行 ping。提交表单时可以轻松更新的地址。此外,通过使用 ng-show,您可以隐藏该验证按钮,直到它有用为止。

它的代码也少了很多。

angular.module('myApp', [])
.controller('myAppCtrl', function($scope){

$scope.number = 0;
$scope.addNetworkFields = function(value) {
$scope.networks = [];
for(var i = 1; i <= parseInt(value); i++){
var network = {number : i, address: ""}
$scope.networks.push(network)
}
}

$scope.submit = function() {
for(var i = 0; i < $scope.networks.length; i++){
console.log($scope.networks[i].address)
}
}
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<body ng-app="myApp" ng-controller="myAppCtrl as ctrl" ng-cloak layout="column" layout-fill>
<form ng-submit="submit()" class="form-group" id = "numNetDiv" style="display:block">
<div class="col-sm-3">
<label for="numNetworks">Number of Networks</label>
<input id="numNetworks" ng-model="number"
ng-change="addNetworkFields(number)" type="number"
class="form-control" required />
<div class="col-sm-3" id="container" style="margin-left: 50px">
<div ng-repeat="network in networks">
<label>Networks {{network.number}}
<input ng-model="network.address"
type="text" class="form-control" /></label>
</div>
<input ng-show="number > 0" type="submit" value="validate"/>
</div>
</div>
</form>
</body>

关于javascript - 动态创建的文本字段的访问值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51450845/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com