如何访问输入文本字段的值,该字段在dom之后可以加载?
我正在使用传单,插件会创建一个输入字段,我不知道如何访问它。
如果我试试这个:
$('#myTextbox1').on('input', function() {
alert($('#myTextbox1').val());
});
我没有得到任何结果。我猜,jQuery无法处理创建的输入字段。
我的HTML看起来像这样:
@extends('layouts.app')
@section('head')
<link rel="stylesheet" type="text/css" href="{{ asset('css/leaflet/leaflet.css') }}">
<link rel="stylesheet" type="text/css" href="{{ asset('css/leaflet/leaflet-search.css') }}">
@ensection
@section('content')
<div class="col-md-8 col-md-offset-2 form-container">
<div id="map-adress"></div>
<div class="panel panel-default marker-panel">
<div class="panel-heading">Create a post</div>
<div class="panel-body">
<div class="col-md-8 col-md-offset-4">
<p>Insert the adress of the marker position<br>
(You can move the marker on the map to the right position).</p>
</div>
<div class="form-group">
<label for="findbox-adress" class="col-md-4 control-label find-label">Marker Location</label>
<div class="col-md-6">
<div id="findbox-adress"></div>
</div>
<div class="col-md-2">
<button type="submit" class="btn btn-primary user_marker_btn">
Validate
</button>
</div>
</div>
</div>
</div>
<div id="user_marker_adress" class="panel panel-default">
<div class="panel-heading">Validate the marker adress</div>
<div class="panel-body">
<form class="form-horizontal" method="POST" action="{{ route('userposts.create') }}">
{{ csrf_field() }}
<div class="form-group">
<label for="a_street" class="col-md-4 control-label">Street</label>
<div class="col-md-6">
<input id="a_street" type="text" class="form-control" name="a_street" required>
</div>
</div>
<div class="form-group">
<label for="a_street_no" class="col-md-4 control-label">Street No.</label>
<div class="col-md-6">
<input id="a_street_no" type="text" class="form-control" name="a_street_no" required>
</div>
</div>
<div class="form-group">
<label for="a_zip_code" class="col-md-4 control-label">Zip Code</label>
<div class="col-md-6">
<input id="a_zip_code" type="text" class="form-control" name="a_zip_code" required>
</div>
</div>
<div class="form-group">
<label for="a_state" class="col-md-4 control-label">State</label>
<div class="col-md-6">
<input id="a_state" type="text" class="form-control" name="a_state" required>
</div>
</div>
<div class="form-group">
<label for="a_country" class="col-md-4 control-label">Country</label>
<div class="col-md-6">
<input id="a_country" type="text" class="form-control" name="a_country" required>
</div>
</div>
<div class="form-group">
<div class="col-md-8 col-md-offset-4">
<button type="reset" class="btn btn-danger">
Clear
</button>
<button type="submit" class="btn btn-primary">
Next
</button>
</div>
</div>
</form>
</div>
</div>
@endsection
@section('scripts')
<script type="text/javascript" src="{{ asset('js/leafleat/leaflet.js') }}"></script>
<script type="text/javascript" src="{{ asset('js/leafleat/leaflet-search.js') }}"></script>
<script type="text/javascript" src="{{ asset('js/leafleat/marker-adress.js') }}"></script>
@endsection
ID为“findbox-adress”的div触发插件,该插件将创建带有输入的表单,我无法访问。
希望,有人对我的问题有了理解......
修改: 好的,我在这个元素中找到了一个ID,并且ID正在工作,但只有我输入的文本。插件给了我一个下拉选项(像ajax这样的自动完成),我可以在其中选择一个无序列表李的。但在那里,我无法获得价值?如果有人点击自动填充(li's),我怎样才能获得价值?
我的尝试:
$(".user_marker_btn").click(function(){
console.log($("#searchtext9").val());
});
答案 0 :(得分:1)
在动态创建的元素上,使用事件委托来附加事件侦听器。
将事件侦听器附加到DOM-load上存在的父元素,然后将您希望委派事件的元素传递给:
$('body').on('input', '#myTextbox1', function() {
alert($('#myTextbox1').val());
});
答案 1 :(得分:0)
首先,您的代码看起来不正确。请参阅jQuery手册:http://api.jquery.com/on/ 这可能是:
$( "body" ).on( "click", "input#myTextbox1" function() {
console.log( $( this ).val() );
});
正如你所说,“带有ID的div”findbox-adress“触发插件,它将创建带有输入的表单” 如果您可以在点击或触发div“findbox-adress”时跟踪事件,您可以轻松检查表单是否已添加到DOM中,然后使用$(“input#myTextbox1”检查输入字段“).VAL();
或者,如果您无法跟踪加载表单的事件,则需要有一个函数来检查表单何时加载到DOM中。这可能是使用setTimeout()或框架/库的任何其他方法。最后在表单加载时停止跟踪。