Похоже, вам нужно urlencode
указать имя файла, когда вы вставляете его в URL-адрес, который вы создаете. За комментарий выше, не делая этого, вы нарушаете строку GET
.
array(5) {
["action"]=> string(6) "rename"
["file_id"]=> string(5) "24086"
["filename"]=> string(8) "Black "
["White_pdf"]=> string(0) ""
["assn_id"]=> string(2) "25"
}
Это привело вас к выводу, что код, который вы опубликовали, терпит неудачу. Это не так. Это просто конструирует неверный HTML, который затем терпит неудачу, когда вы нажимаете на него.
Этот код:
display_name; ?>
Должен выглядеть так:
display_name; ?>
После обработки запроса вам понадобится urldecode
$_GET['filename']
.
Я бы посоветовал вам не иметь пробелов и специальных символов, например &
в вашем имени файла (если вы действительно используете это имя в качестве имени файла файловой системы). Вы просите о неприятностях.
Я предложу вам другой подход здесь ...
Во-первых, для этого вам нужен только один обработчик, поскольку логика одинакова для обоих входов. Вы можете использовать более одного селектора ... Например: $('#password, #password2')
. Но я бы вместо этого использовал класс ... Как $(".password")
. Вам решать.
Во-вторых, я сказал «логика та же» ... То есть :
Если один из двух входов не пуст оба требуются.
blockquote>Таким образом, наличие одинакового обработчика событий
change
на обоих входах означает, что вы не знаете, какой из них вызвал событие. Поэтому я предлагаю использовать цикл.each()
здесь (чтобы убедиться, что вы проверяете все значения) ... и логический «флаг» (true / false).После этого цикла используйте этот «флаг» , чтобы установить атрибут
required
.& nbsp; & nbsp; & nbsp; Я использовал правило CSS, чтобы сделать результат очевидным в приведенном ниже фрагменте кода.
$('#password, #password2').change(function(){ // Look up for the password inputs in that "row". var pass_inputs = $(this).closest(".row").find("[type='password']"); // Flag to determine if at least one is not empty. var not_empty = false; // Loop throug the password inputs and change the flag. pass_inputs.each(function(){ if($(this).val() != ''){ not_empty = true } }); // Use the flag as the boolean argument for the required attribute. pass_inputs.attr('required', not_empty); });
[required]{ border: 3px solid red; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <form id="edicionPerfilForm" action="actor/edit.do" method="post"> <div class="row"> <div class="form-group col-md-4"> <div> <label for="password">Password</label> <input id="password" name="password" class="form-control" type="password" value="" oninvalid="this.setCustomValidity('Fill out this field')" oninput="this.setCustomValidity('')"> <br> </div> </div> <div class="form-group col-md-4"> <div> <label for="password2">Repeat password</label> <input id="password2" name="password2" class="form-control" type="password" value="" oninvalid="this.setCustomValidity('Fill out this field')" oninput="this.setCustomValidity('')"> </div> </div> </div> <button name="save" type="submit" class="btn btn-dark">Send</button> </form>